【发布时间】:2018-08-20 08:33:04
【问题描述】:
我有一个窗口,我在我的应用程序中用作登录对话框。这是我的 MainWindow 视图模型中的按钮处理程序:
private void LoginDialogButtonPressed(object obj)
{
var vm = new LoginDialogWindowVM(Controller);
var window = new LoginDialogWindow(vm);
window.Owner = Application.Current.MainWindow;
window.ShowDialog();
}
我的登录窗口设置为WindowStartupLocation="CenterOwner"。现在,这在调试模式下的 Visual Studio 中运行良好。但是在构建和运行版本时,打开登录对话框会引发异常:“无法将 Owner 属性设置为自身。”
如果我放弃设置 window.Owner,窗口只会在主监视器上的随机位置打开。
我在这里做错了什么?如何让登录窗口以 MainWindow 为中心打开而不引发异常?
这是引发的整个异常:
【问题讨论】:
-
如果您没有所有者窗口,请使用 CenterScreen 作为 WindowStartupLocation
-
LoginDialogWindow在您的情况下是Application.Current.MainWindow。 -
@GaurangDave 谢谢。是的,这让我明白了。研究如何从视图模型中获取 MainWindow...
-
@ASh 感谢您的提示。如果我无法解决这个问题,我会把它作为 B 计划。
-
谢谢@Oystein!享受编码!