当Owner为null时,WindowStartupLocation =“CenterOwner”

时间:2016-06-13 14:12:36

标签: c# wpf

如果所有者窗口为空,var obj1 = { prop1: 'string1', prop2: 'string2' } var obj2 = { prop1: 'string3' } Object.keys(obj1).forEach(function(key) { if (obj2.hasOwnProperty(key)) obj2[key] = obj1[key]; }); console.log(obj2);的工作原理是什么?是否有可能以某种方式改变这种行为(最好是在应用程序中全局,而不是在每个窗口上)?

在我的应用程序中,我有几个对话框(大多数都有助于更改一些应用程序的配置/设置),我在定义WindowStartupLocation="CenterOwner"之前或之后显示。例如,在应用程序启动时,我会显示一个窗口,供有人选择应用程序语言。我通过应用程序设置窗格/窗口显示完全相同的内容。

我想要出现这个语言选择窗口

    在应用程序启动时调用屏幕中心的
  • ,因此Application.Current.MainWindow为空且选择窗口没有所有者
  • 从应用程序设置窗格/窗口调用时,在其父/所有者窗口的中心

Application.Current.MainWindow是定义窗口位置的属性。但是,如果我设置WindowStartupLocation且所有者为空,则窗口将显示在屏幕的左上角。

到目前为止,我在'every'窗口构造函数中有一个if语句,用于检查owner是否为null并更改WindowStartupLocation="CenterOwner"

WindowStartupLocation

有更优雅的方式吗?例如,指示框架来处理它。设置类似WindowStartupLocation的回退值,例如,如果所有者为null,则为if (dialog.Owner == null && dialog.WindowStartupLocation == WindowStartupLocation.CenterOwner) { dialog.WindowStartupLocation = WindowStartupLocation.CenterScreen; }

0 个答案:

没有答案