如何将WPF应用程序置于屏幕中心?

时间:2009-06-01 16:30:37

标签: c# wpf screen-positioning

我想在主屏幕上启动我的WPF应用程序。我知道我必须设置myWindow.Left和myWindow.Top,但是我从哪里获取值?

我发现System.Windows.Forms.Screen.PrimaryScreen,显然不是WPF。是否有WPF替代方案可以为我提供屏幕分辨率或类似的内容?

8 个答案:

答案 0 :(得分:134)

<强> XAML

WindowStartupLocation="CenterScreen"

答案 1 :(得分:118)

将它放在窗口构造函数

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
  

.NET FrameworkSupported in:4,3.5,   3.0

     

.NET Framework Client ProfileSupported   in:4,3.5 SP1

答案 2 :(得分:49)

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

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

......工作正常。

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

答案 3 :(得分:8)

PresentationFramework中的SystemParameters类怎么样?它有一个WorkArea属性,似乎就是你要找的东西。

但是,为什么不设置Window.WindowStartupLocation呢? CenterScreen是枚举值之一。你需要调整中心吗?

答案 4 :(得分:7)

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

答案 5 :(得分:2)

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

有关详细信息,请参阅this question,但您可以使用WindowInteropHelper类来包含WPF控件,从而使用与屏幕相关的调用。

答案 6 :(得分:2)

var window = new MyWindow();

用于屏幕使用的中心:

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

用于父窗口的中心:

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

答案 7 :(得分:0)

我更喜欢将其放在WPF代码中。

[WindowName].xaml文件中:

<Window x:Class=...
...
WindowStartupLocation ="CenterScreen">