2013-06-19 2 views
0

У меня есть приложение WPF, где у меня есть небольшой сводный обзор данных, но пользователь может расширить этот вид до большего размера. Содержание данных в основном такое же, поэтому я рассматривал возможность использования одной и той же модели представления для обоих. Прямо сейчас, используя MVVM, отображение данных управляется DataTemplate.Перестановка между WPF DataTemplates

Как поменять местами между Datatemplates для одной и той же модели представления? Возможно ли это, или мне нужно создать ViewModel для небольшого просмотра и расширенного представления?

ответ

1

Используйте ContentPresenter внутри "Primary" (обратите внимание на кавычки) 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.

Смежные вопросы