![](/img/trans.png)
[英]Setting WindowState to Maximized causes window to appear too early
[英]WPF - Incorrect Window resolution after setting Window.Windowstate to Maximized programmatically
因此,我试图在辅助监视器上打开一个最大化的窗口。 一切正常,只是它的高度比应该的高度低2个像素。
我的辅助显示器的分辨率为1280x1024。 但是,一旦我检查了窗口,它就是1280x1022。 有人知道这个问题吗?
作业系统:Windows 10
这是一些代码:
SecondaryMonitorWindow smw = new SecondaryMonitorWindow();
smw.Show();
XAML
Loaded="OnWindowLoaded"
WindowStartupLocation="Manual"
WindowStyle="None"
SnapsToDevicePixels="True"
Height="1280"
Width="1024"
建设者
public SecondaryMonitorWindow()
{
InitializeComponent();
Instance = this;
}
事件
private void OnWindowLoaded(object sender, RoutedEventArgs e)
{
this.MaximizeToSecondaryMonitor();
}
扩展方法
public static void MaximizeToSecondaryMonitor(this Window window)
{
var secondaryScreen = Windows.Forms.Screen.AllScreens.Where(s => !s.Primary).FirstOrDefault();
if (secondaryScreen != null)
{
if (!window.IsLoaded)
window.WindowStartupLocation = WindowStartupLocation.Manual;
window.Left = secondaryScreen.WorkingArea.Left;
window.Top = secondaryScreen.WorkingArea.Top;
window.Width = secondaryScreen.WorkingArea.Width;
window.Height = secondaryScreen.WorkingArea.Height;
if (window.IsLoaded)
window.WindowState = WindowState.Maximized;
}
}
尝试以语法方式设置参数,这样您才能达到理想的大小:
public MainWindow()
{
InitializeComponent();
this.Height = SystemParameters.WorkArea.Height;
this.Width = SystemParameters.WorkArea.Width;
}
但是, Window 10
周围存在错误。 如果您正在使用,请告诉我,我将更新答案。
对于Windows 10, 这篇文章会有所帮助。 窗口10中没有设计Border
,因此存在一些像素问题。 我不确定您的操作系统上的Window
装饰设置是什么,但是请尝试此操作。
this.Height = SystemParameters.WorkArea.Height + SystemParameters.FixedFrameHorizontalBorderHeight;
this.Width = SystemParameters.WorkArea.Width + SystemParameters.FixedFrameVerticalBorderWidth;
如果删除了其他一些边框,也可以尝试添加ResizeFrame
边框大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.