WPF当前屏幕尺寸

在我的所有应用程序中,如果我希望根据当前的显示器分辨率调整窗口大小,请使用以下命令:

System.Drawing.Rectangle workingArea = System.Windows.Forms.Screen.FromHandle(new System.Windows.Interop.WindowInteropHelper(App.Current.MainWindow).Handle).WorkingArea; 

但是,我有一个客户端,他使用多个显示器,但这只是不起作用。 resize的窗口跨越到第二个监视器。 只有这一个客户。 我用多台显示器对它进行了测试,效果很好。

任何人都可以建议一个更好的/替代方法?

对于任何FrameworkElement您可以使用它来获取它的渲染大小( HeightWidth )。

 FrameworkElement.ActualWidth; FrameworkElement.ActualHeight; 

所以在这种情况下,您可以将它用于您的窗口。

您需要使用Windows Forms的类System.Windows.Forms.Screen 。 它允许屏幕枚举,并获得您的WPF窗口的屏幕,使用此Screen.FromHandle(new WindowInteropHelper(this).Handle)片段。 但是,高分辨率屏幕存在问题 – 您需要将WPF的96 dpi转换为显示器具有的任何像素密度。