Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找与我的ViewModel关联的视图的所有者_C#_Wpf_Mvvm_Prism - Fatal编程技术网

C# 查找与我的ViewModel关联的视图的所有者

C# 查找与我的ViewModel关联的视图的所有者,c#,wpf,mvvm,prism,C#,Wpf,Mvvm,Prism,我正在实现一个IDialogService。这将从我的ViewModel调用,它不知道视图 推断所有者提供给ShowDialog的最佳方法是什么 如果我可以避免注册哪个视图绑定到哪个ViewModel,那就太好了 如果有帮助,我正在使用Prism(v6)。您可以尝试以下方法: window.Owner = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive); window.

我正在实现一个
IDialogService
。这将从我的ViewModel调用,它不知道视图

推断所有者提供给
ShowDialog
的最佳方法是什么

如果我可以避免注册哪个视图绑定到哪个ViewModel,那就太好了

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

您可以尝试以下方法:

window.Owner = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);
window.Owner=Application.Current.Windows.OfType().SingleOrDefault(x=>x.IsActive);

window.Owner=Application.Current.MainWindow如何?@Kirenenko我考虑过这个问题,但是如果(不是很理想,但是如果)主窗口打开一个新窗口,并且这个窗口打开一个对话框,它将不会是新窗口的模态?是的,我认为它将是
主窗口的模态,不管调用的窗口是什么。然后您可以尝试
Application.Current.Windows.OfType().SingleOrDefault(x=>x.IsActive)@Kirenenko这实际上可能有效(我看不出任何不适合这种方法的场景)。你应该在上面贴个答案谢谢。我只是添加了一些其他情况(例如,如果没有窗口处于活动状态,则将“第一个”视为非活动状态),或者如果根本没有窗口,则只需返回null,并且在调试它时也要小心。我记得一些失败,因为主活动窗口是调试器。