在mvvm中选择相关datatemplate的usercontrol

时间:2010-03-14 21:41:22

标签: wpf mvvm user-controls selection

我可以说是WeeklyViewUserControl.xaml和DailyViewUserControl.xaml。

通常我使用这样的东西来切换内容:

 <DataTemplate DataType="{x:Type ViewModel:LessonPlannerViewModel}">
        <View:LessonPlannerDailyUC/>
    </DataTemplate>

到目前为止一直有效。但是现在我仍然使用了WeeklyViewUC,它使用了90%的LessonPlannerViewModel代码,所以我想另外做这个:

<DataTemplate DataType="{x:Type ViewModel:LessonPlannerViewModel}">
        <View:LessonPlannerWeeklyUC/>
    </DataTemplate>

但这不起作用,因为ContentControl来自哪里

知道VM(LessonPlannerViewModel)应该显示DailyViewUC还是WeeklyViewUC?

   <ContentControl Content="{Binding VM}" /> 

这是我的进一步情景:

DailyViewUC有一个按钮“每周视图”,它通过Command =“{...}”执行到LessonPlannerViewModel中的命令。

WeeklyViewUC有一个按钮“每日视图”......

根据按下的按钮,datatemplate应以某种方式选择要显示的相应UserControl!

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以创建DataTemplateSelector并将其分配给ContentControl的{​​{3}}媒体资源。