我在页面上有一个用户控件,我想在其网格中加载另一个自定义用户控件。但是我希望用户控件类型是动态的 - 例如从下拉列表中选择“Calculator”将显示我的自定义计算器控件并选择“Currency Converter”将加载我的货币转换器。有人可以帮忙吗?
顺便说一句,我试图坚持使用MVVM。
提前致谢。
答案 0 :(得分:3)
一种方法是为每个孩子定义多个DataTemplates
。当用户选择选项时,将相应的ViewModel
设置为父视图中的ContentControl's DataContext
,框架将为您选择相应的视图。
答案 1 :(得分:-1)
John Papa写了一篇很棒的博客文章,关于如何做到这一点here。
基本策略是实例化从下拉列表中选择的从UserControl派生的类的新实例。
换句话说,可以处理下拉列表的SelectionChanged事件,并根据所选项创建新的UserControl对象。