动态子用户控制MVVM

时间:2011-07-09 16:23:47

标签: silverlight mvvm

我在页面上有一个用户控件,我想在其网格中加载另一个自定义用户控件。但是我希望用户控件类型是动态的 - 例如从下拉列表中选择“Calculator”将显示我的自定义计算器控件并选择“Currency Converter”将加载我的货币转换器。有人可以帮忙吗?

顺便说一句,我试图坚持使用MVVM。

提前致谢。

2 个答案:

答案 0 :(得分:3)

一种方法是为每个孩子定义多个DataTemplates。当用户选择选项时,将相应的ViewModel设置为父视图中的ContentControl's DataContext,框架将为您选择相应的视图。

答案 1 :(得分:-1)

John Papa写了一篇很棒的博客文章,关于如何做到这一点here

基本策略是实例化从下拉列表中选择的从UserControl派生的类的新实例。

换句话说,可以处理下拉列表的SelectionChanged事件,并根据所选项创建新的UserControl对象。