0

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

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

<ContentControl Name="TestControl" />

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

我试图使测试控件成为 MVVM 控件,但仍然出现无法加载视图错误。有意义,因为没有创建这样的实例。如果我在视图模型之外创建动态加载视图的实例,我如何“添加”它以便 CM 找到它?

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

谢谢你的帮助。

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

4

1 回答 1

0

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

那么,AssemblySoure.Instance 是什么?这是 Caliburn.Micro 寻找 Views 的地方。您可以在应用程序期间随时向其中添加程序集,以使它们可用于框架,但在 Bootstrapper 中也有一个特殊的地方可以执行此操作。

于 2012-10-10T22:23:05.607 回答