2013-06-19 132 views
0

我有一個WPF應用程序,其中有一個小數據摘要視圖,但用戶能夠將該視圖擴大到更大的顯示。數據內容基本相同,所以我正在考慮對兩者使用相同的視圖模型。現在使用MVVM,數據的顯示由DataTemplate控制。在WPF數據模板之間切換

怎樣的DataTemplates之間交換爲同一視圖模型?它甚至可能或者我需要爲小視圖和擴展視圖創建ViewModel?

回答

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被觸發時,ContentTemplatemyViewModel2,當它不是時,它將是myViewModel1