将视图分配给MVVM中的ContentControl

时间:2014-04-01 04:39:48

标签: c# wpf xaml mvvm contentcontrol

我有一组ViewModel,每个代表一个功能,每个ViewModel都与一个视图相关联。我有MainWindow我应该在其中显示视图,以及何时创建与其关联的ViewModel。怎么办呢?

MainWindow.xaml

<FlowLayoutControl>
    <ContentControl Name="MainScreen">
    </ContentControl>
</FlowLayoutControl>   

我有一个vieModel Test1和Test2,每个都有自己的datatemplate。现在,我想在需要时将ContentControl设置为viewmodel之一。我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果您的资源中的DataTemplate看起来像这样:

<DataTemplate DataType="{x:Type local:ViewModel}">
...

当您需要使用ContentControl时:

<ContentControl Name="MyContent">            
    <local:ViewModel /> <!-- Your ViewModel here -->
</ContentControl>

这意味着,DataTemplate将明确用于此类型的所有控件。

如果您的DataTemplate设置 x:Key

<DataTemplate x:Key="MyTemplate" DataType="{x:Type local:ViewModel}">
...

当您需要像这样使用ContentControl时:

<ContentControl Name="MyContent"  
                ContentTemplate="{StaticResource MyTemplate}">

    <local:ViewModel /> <!-- Your ViewModel here -->
</ContentControl>