WPF-设置窗口后,窗口分辨率不正确.WindowsState以编程方式最大化



所以我试图在我的辅助监视器上打开一个最大化的窗口。这一切都很好,除了它的高度比它应该的低2个像素

我的辅助显示器的分辨率为1280x1024。然而,一旦我检查了窗户,它是1280x1022。有人知道这个问题吗?

操作系统:Windows 10

实际高度/宽度图像(Puush)

这里有一些代码:

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;
    }

但是CCD_ 1周围存在缺陷。如果你正在使用,请告诉我,我会更新答案。

对于Window 10,这篇文章将有所帮助。在窗口10中没有设计CCD_ 2,因此存在一些像素问题。我不确定你的操作系统上的Window装饰设置是什么,但试试这个。

this.Height = SystemParameters.WorkArea.Height +  SystemParameters.FixedFrameHorizontalBorderHeight;
this.Width = SystemParameters.WorkArea.Width + SystemParameters.FixedFrameVerticalBorderWidth;

如果有其他边框被删除,也可以尝试添加ResizeFrame边框大小。

最新更新