我想在主屏幕上启动我的 WPF 应用程序。我知道我必须设置 myWindow.Left 和 myWindow.Top,但是我从哪里获得这些值?
我发现System.Windows.Forms.Screen.PrimaryScreen
,这显然不是 WPF。是否有 WPF 替代方案可以为我提供屏幕分辨率或类似的东西?
我想在主屏幕上启动我的 WPF 应用程序。我知道我必须设置 myWindow.Left 和 myWindow.Top,但是我从哪里获得这些值?
我发现System.Windows.Forms.Screen.PrimaryScreen
,这显然不是 WPF。是否有 WPF 替代方案可以为我提供屏幕分辨率或类似的东西?
xml
<Window ... WindowStartupLocation="CenterScreen">...
把它放在你的窗口构造函数中
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
.NET Framework 支持:4、3.5、3.0
.NET Framework 客户端配置文件受以下版本支持:4、3.5 SP1
您仍然可以使用 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
!
var window = new MyWindow();
对于屏幕中心使用:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
对于父窗口的中心使用:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
I prefer to put it in the WPF code.
In [WindowName].xaml
file:
<Window x:Class=...
...
WindowStartupLocation ="CenterScreen">
没有等效的 WPF。System.Windows.Forms.Screen
仍然是 .NET 框架的一部分,但可以从 WPF 中使用。
有关更多详细信息,请参阅此问题,但您可以通过使用WindowInteropHelper
类来包装 WPF 控件来使用与屏幕相关的调用。