Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf 如何使用Caliburn Micro从用户控件获取对窗口的引用_Wpf_Mvvm_Caliburn.micro - Fatal编程技术网

Wpf 如何使用Caliburn Micro从用户控件获取对窗口的引用

Wpf 如何使用Caliburn Micro从用户控件获取对窗口的引用,wpf,mvvm,caliburn.micro,Wpf,Mvvm,Caliburn.micro,我想从一个用户控件视图模型中获取一个对保存该用户控件的窗口的引用。我该怎么做 如果我可以从视图模型中获取对视图的引用,那么我可以使用: Window parentWindow = Window.GetWindow(userControlReference); 因此,我的问题是: 从用户控件视图模型获取对保存用户控件的窗口的引用的最佳方法是什么? 如果我想使用上面的代码,在Caliburn Micro中从视图模型获取视图引用的最佳方法是什么? 假设viewmodel是IScreen实现,它通常

我想从一个用户控件视图模型中获取一个对保存该用户控件的窗口的引用。我该怎么做

如果我可以从视图模型中获取对视图的引用,那么我可以使用:

Window parentWindow = Window.GetWindow(userControlReference); 
因此,我的问题是:

从用户控件视图模型获取对保存用户控件的窗口的引用的最佳方法是什么? 如果我想使用上面的代码,在Caliburn Micro中从视图模型获取视图引用的最佳方法是什么?
假设viewmodel是IScreen实现,它通常会从iViewWare继承

您可以将一个屏幕投射到IViewAware,然后使用GetView方法获取对视图的引用。我认为您可以在自己的viewmodels上实现iViewWare,Caliburn将自动引发ViewAttached事件,以便您可以保留对视图的引用,但我可能会查看文档

底线:查看IViewAware接口

编辑:

从文件中


IViewAware–由需要了解其绑定到的视图的类实现。它有一个AttachView方法,框架在将视图绑定到实例时调用该方法。它有一个GetView方法,框架在为实例创建视图之前调用该方法。这允许缓存复杂视图,甚至复杂视图解析逻辑。最后,当视图附加到名为ViewAttached的实例时,它会引发一个事件。

如果它是IScreen实现,则viewmodel通常会从IViewAware继承

您可以将一个屏幕投射到IViewAware,然后使用GetView方法获取对视图的引用。我认为您可以在自己的viewmodels上实现iViewWare,Caliburn将自动引发ViewAttached事件,以便您可以保留对视图的引用,但我可能会查看文档

底线:查看IViewAware接口

编辑:

从文件中

IViewAware–由需要了解其绑定到的视图的类实现。它有一个AttachView方法,框架在将视图绑定到实例时调用该方法。它有一个GetView方法,框架在为实例创建视图之前调用该方法。这允许缓存复杂视图,甚至复杂视图解析逻辑。最后,当视图附加到名为ViewAttached的实例时,应该引发一个事件