我想在主屏幕上启动我的WPF应用程序。我知道我必须设置myWindow.Left和myWindow.Top,但是我从哪里获取值?
我发现System.Windows.Forms.Screen.PrimaryScreen
,显然不是WPF。是否有WPF替代方案可以为我提供屏幕分辨率或类似的内容?
答案 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">