125

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

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

4

8 回答 8

183

xml

<Window ... WindowStartupLocation="CenterScreen">...
于 2011-05-24T13:44:20.597 回答
159

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

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET Framework 支持:4、3.5、3.0

.NET Framework 客户端配置文件受以下版本支持:4、3.5 SP1

于 2011-02-18T16:30:14.477 回答
49

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

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

...工作得很好。

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

于 2009-06-01T16:37:10.110 回答
8

PresentationFramework 中的 SystemParameters 类呢?它有一个WorkArea属性,这似乎是您正在寻找的。

但是,为什么不设置 Window.WindowStartupLocation 工作?CenterScreen 是枚举值之一。是否需要调整居中?

于 2009-06-04T03:34:50.567 回答
8

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

于 2011-09-05T06:53:53.750 回答
4
var window = new MyWindow();

对于屏幕中心使用:

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

对于父窗口的中心使用:

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
于 2017-04-28T11:45:02.150 回答
3

I prefer to put it in the WPF code.

In [WindowName].xaml file:

<Window x:Class=...
...
WindowStartupLocation ="CenterScreen">
于 2020-04-24T20:29:57.653 回答
2

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

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

于 2009-06-01T16:39:12.247 回答