查找与我的ViewModel相关联的View的所有者

3

我正在实现一个IDialogService。这将会从我的ViewModel中调用,但是ViewModel并不知道View。

为了确定传递给ShowDialogOwner,最好的方法是什么?

如果可以的话,最好避免注册哪个View绑定到哪个ViewModel。

如果能有帮助的话,我正在使用Prism(v6)。


window.Owner = Application.Current.MainWindow; 怎么样? - Jose
@Kirenenko 我考虑过这个问题,但是如果(没有理想情况,但如果)MainWindow打开一个新窗口,而这个窗口又打开一个对话框,那么它对于新窗口来说就不是模态的了? - J4N
1
是的,我认为它将会是模态的到 MainWindow,无论调用窗口如何。然后你可以尝试 Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive); - Jose
@Kirenenko 这个方法可能真的可行(我没有看到任何不适用于这种方法的情况)。你应该发表一个回答。 - J4N
1个回答

5
你可以尝试这样做:
window.Owner = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);

1
谢谢。我刚刚添加了一些其他情况(例如,如果没有窗口处于活动状态,则获取“第一个”非活动窗口),或者如果根本没有窗口,就返回 null。 - J4N
在调试时要小心。我记得有些失败是因为主活动窗口是调试器。 - Jose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接