WPF MVVM中的动态控件

时间:2011-03-27 09:58:03

标签: wpf mvvm

我有一个MVVM的应用程序,工作正常。现在我想用动态控件替换我的一个控件。动态我的意思是我不知道它是什么控件,只是它是一个GUI控件。它可能像图像一样简单,也可能是在此应用完成后由其他人创建的自定义第三方用户控件。

有人能说明如何在MVVM中实现这一目标吗?我很久以前就已经使用ListBox或类似的(iirc)来生成GUI元素(不记得细节)了。但是这次我想学习背后的理论。

修改
让我们说View包含一个例如System.Windows.UIElement的实例列表。我想在表面上显示所有这些UI控件(例如在堆叠控件中)。

1 个答案:

答案 0 :(得分:1)

您可以创建一个将Content属性公开为占位符的View(因此可能只需要ContentControl)然后可以将content属性设置为动态控件。

您必须添加一点反射来动态加载程序集并实例化所需的控件。

动态加载的控件必须使用DataContext属性访问数据。如果动态控件也是MVVM,它可能有自己的ViewModel,所以你必须找到一种方法来加载它(再次反射?)并将控件的DataContext指向加载的ViewModel。

这是否有意义,这是你在找什么?

相关问题