在WPF DataTemplates之间交换

时间:2013-06-19 19:37:55

标签: wpf mvvm datatemplate

我有一个WPF应用程序,我有一个小的数据摘要视图,但用户可以将该视图扩展到更大的显示。数据内容基本相同,所以我考虑使用相同的视图模型。现在使用MVVM,数据的显示由DataTemplate控制。

如何在相同视图模型的Datatemplates之间切换?它是否可能,或者我是否需要为小视图和展开视图创建ViewModel?

1 个答案:

答案 0 :(得分:1)

在“主要”内部使用ContentPresenter(注意引号)DataTemplate,并使用DataTriggers动态更改ContentTemplate

<DataTemplate>
   <ContentPresenter x:Name="Content"
                     Content="{Binding}"
                     ContentTemplate="StaticResource myViewModel1"/>

   <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding SomeVMProperty}" Value="SomeValue">
            <Setter TargetName="Content" Property="ContentTemplate" Value="{StaticResource myViewModel2}"/>
        </DataTrigger>
   </DataTemplate.Triggers>
</DataTemplate>

这样,当DataTrigger被触发时,ContentTemplate将为myViewModel2,如果不是,则为myViewModel1