2013-06-19 4 views
0

데이터에 대한 간단한 요약보기가있는 WPF 응용 프로그램이 있지만 사용자가이보기를 더 큰 화면으로 확장 할 수 있습니다. 데이터 컨텐츠는 기본적으로 동일하므로 두 모델 모두에 동일한 뷰 모델을 사용할 것을 고려하고있었습니다. 현재 MVVM을 사용하면 데이터 표시가 DataTemplate에 의해 제어됩니다.WPF DataTemplates 간의 교환

동일한보기 모델에 대해 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이됩니다.

관련 문제