在WPF数据模板之间进行交换



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

我如何在datatemplate之间交换相同的视图模型?它甚至可能或者我需要为小视图和扩展视图创建一个ViewModel吗?

在"Primary"(注意引号)DataTemplate和一些DataTriggers内使用ContentPresenter来动态更改它的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

最新更新