如何在屏幕上中心的WPF应用程序?

我想要在主屏幕上启动中心我的WPF应用程序。 我知道我必须设置myWindow.Left和myWindow.Top,但我在哪里可以得到值?

我发现System.Windows.Forms.Screen.PrimaryScreen ,显然不是WPF。 有没有一个WPF的select,给我的屏幕分辨率或类似的东西?

把它放在你的窗口构造函数中

 WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; 

.NET FrameworkSupported in:4,3.5,3.0

.NET Framework Client ProfileSupported in:4,3.5 SP1

XAML

 WindowStartupLocation="CenterScreen" 

您仍然可以使用WPF应用程序中的Screen类。 您只需要从您的应用程序中引用System.Windows.Forms程序集。 一旦你完成了,(和下面的例子引用System.Drawing):

 Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea; 

…工作得很好。

您是否考虑将您的主窗口属性WindowStartupLocation设置为CenterScreen?

那么PresentationFramework中的SystemParameters类呢? 它有一个WorkArea属性,这似乎是你在找什么。

但是,为什么不设置Window.WindowStartupLocation的工作? CenterScreen是枚举值之一。 你必须调整中心?

您不需要从应用程序中引用System.Windows.Forms程序集。 相反,你可以使用System.Windows.SystemParameters.WorkArea 。 这相当于System.Windows.Forms.Screen.PrimaryScreen.WorkingArea

没有WPF等价物。 System.Windows.Forms.Screen仍然是.NET框架的一部分,可以从WPF使用。

有关更多详细信息,请参阅此问题 ,但是可以使用WindowInteropHelper类来包装WPF控件,从而使用与屏幕相关的调用。

 var window = new MyWindow(); 

对于屏幕的中心使用:

 window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; 

为父窗口的中心使用:

 window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;