如何使用Caliburn Micro动态加载EXTERNAL MVVM和NON MVVM控件



我正在从web服务器从单独的XAP文件动态加载控件。创建实例后,我想在选项卡页面中显示它们。控制可以是使用CM的MMVM控制,也可以是非MVVM标准控制。

在尝试选项卡之前,我测试了通过使用在页面上动态显示控件

<ContentControl Name="TestControl" />

测试控件是类型UserControl的一个属性,它是通过创建动态加载控件的新实例来设置的。现在这给了我一个错误,它找不到视图。在非MVVM控件的情况下,当然没有视图,那么我如何加载非MVVM控制?

我试图使测试控件成为MVVM控件,但仍然得到无法加载视图的错误。这很有道理,因为没有创建这样的实例。如果我在视图模型之外创建一个动态加载视图的实例,我如何"添加"它以便CM找到它?

最后但同样重要的是,我如何将其绑定到Silverlight中的选项卡控件?这个想法是有一个用户控件(插件)的集合,每个插件都在其单独的选项卡页面中呈现。

谢谢你的帮助。

(我很快就完成了,没有使用MVVM,仍然不确定MVVM是否值得所有的复杂性)

没有"mvvm控制"这回事。MVVM只是一种模式,而不是一种控制类型。基本上,在Caliburn中,你不需要直接使用UserControls或Views,但如果你选择ViewModel优先的方法,Caliburn框架应该能够为你找到匹配的视图。在您的情况下,由于您正在动态加载XAP文件,因此需要将它们添加到Caliburn外观的程序集列表中,以找到View/ViewModel(并将它们绑定在一起),这是通过IAssemblySource接口完成的。根据此处的文档:

那么,什么是AssemblySour.Instance?这是一个Caliburn.Micro查找视图。您可以在任何位置将程序集添加到此在应用程序期间使它们可用于框架的时间,但Bootstrapper也有一个特殊的地方可以做这件事。

最新更新