0

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

如何在同一视图模型的数据模板之间交换?甚至有可能还是我需要为小视图和扩展视图创建一个 ViewModel?

4

1 回答 1

1

ContentPresenter在“Primary”中使用 a (注意引号) 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

于 2013-06-19T19:56:03.033 回答