c# - 在与 MainWindow 相同的监视器上打开窗口

标签 c# wpf window

我见过很多关于类似问题的问题,但我还没有找到一个足够具体到我的问题来找到答案的问题。

我允许用户四处移动我程序的主窗口,如果他们有的话,还可以移动到另一台显示器上。当他们单击以在 MainWindow 上添加内容时,会创建一个新窗口,以便他们填写表格。

问题是这个新窗口将在操作系统的主屏幕上启动,而不是在主窗口当前所在的屏幕上启动。

我看过这个问题; How to make a dialog(view) open up on the same monitor as the main window并看到在这种情况下将所有者设置为 MainWindow 有效。所以我加了

Owner = Application.Current.MainWindow;

新Window进入Window_Loaded方法。这确实会在与 MainWindow 相同的屏幕上加载 Window,但随后会崩溃,提示 Cannot set Owner property after Dialog is showed。

自然地,我将 Owner 属性的设置移动到显示新窗口之前,所以它看起来像这样;

contractAddwindow.Owner = Application.Current.MainWindow; contractAddwindow.ShowDialog();

然而,这会遇到与之前相同的问题,contractAddWindow 在主屏幕上启动。

所以我的问题是,如何强制新窗口加载到与主窗口相同的监视器上而不是主屏幕?

最佳答案

您可以使用WindowStartupLocation:

来自 XAML:

WindowStartupLocation="CenterOwner"

来自代码:

WindowStartupLocation = WindowStartupLocation.CenterOwner;

关于c# - 在与 MainWindow 相同的监视器上打开窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42108110/

相关文章:

c# - 线程之间以及托管和非托管代码之间的绑定(bind)

c# - 如何将二维数组 bool[][] 绑定(bind)到 WPF DataGrid(单向)?

java - drawString 不在窗口上绘制文本

c# - 引发事件时我应该如何实现 "quiet period"?

c# - C#中的Cast操作优先级

c# - 强制 DataGrid 列验证 (WPF)

c# - WPF C# 数据网格对象引用未设置为对象的实例

java - 无法读取输入文件

c# - 窗口服务中的代码是如何执行的?

c# - 随机生成敌人 XNA 4.0 (WP7)