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

d4so4syb  于 2023-05-19  发布在  其他
关注(0)|答案(9)|浏览(140)

我想在启动时将WPF应用程序置于主屏幕的中心。我知道我必须设置myWindow.left和myWindow.top,但是我从哪里获得这些值呢?
我找到了System.Windows.Forms.Screen.PrimaryScreen,它显然不是WPF。有没有一个WPF的替代方案,给我的屏幕分辨率或类似的东西?

bxfogqkk

bxfogqkk1#

我更喜欢把它放在WPF代码中。
[WindowName].xaml文件中:

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

llmtgqce2#

没有WPF等价物。System.Windows.Forms.Screen仍然是.NET框架的一部分,可以从WPF使用。
有关更多详细信息,请参阅此问题,但您可以通过使用WindowInteropHelper类来 Package 您的WPF控件,从而使用与屏幕相关的调用。

jei2mxaa

jei2mxaa3#

您在窗口WindowStartupLocation中有属性。
选择CenterScreen
请参阅下图了解更多信息。

eqfvzcg8

eqfvzcg84#

xaml

<Window ... WindowStartupLocation="CenterScreen">...
fiei3ece

fiei3ece5#

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

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET Framework支持:4、3.5、3.0
.NET Framework客户端配置文件支持:4、3.5 SP1

pgky5nke

pgky5nke6#

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

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

...工作得很好
您是否考虑过将主窗口属性WindowStartupLocation设置为CenterScreen?

kpbwa7wx

kpbwa7wx7#

PresentationFramework中的SystemParameters类怎么样?它有一个WorkArea属性,似乎是你正在寻找的。
但是,为什么设置Window.WindowStartupLocation不起作用呢?CenterScreen是枚举值之一。你必须调整中心吗?

n8ghc7c1

n8ghc7c18#

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

5jvtdoz2

5jvtdoz29#

var window = new MyWindow();

对于屏幕中心用途:

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

对于父窗口的中心,请使用用途:

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

相关问题