0

所以我试图在我的辅助显示器上打开一个最大化的窗口。一切正常,除了它的高度比它应该的低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;
    }
}
4

1 回答 1

0

尝试以语法方式设置参数,这样只有你才能达到完美的尺寸:

 public MainWindow()
    {            
        InitializeComponent();
        this.Height = SystemParameters.WorkArea.Height;
        this.Width = SystemParameters.WorkArea.Width;
    }

但是周围有错误Window 10。如果您正在使用,请告诉我,我会更新答案。

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

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

如果删除了其他一些边框,请尝试ResizeFrame添加边框大小。

于 2016-05-09T12:38:21.527 回答