Использование DataTrigger для применения различных представлений к одной и той же модели представления
У меня есть модель представления, где я создал bool DisplaySummary
собственность. Если это верно, то SummaryView
будет использоваться для визуализации этой модели представления, в противном случае будет использоваться DatailedView
.
Я сомневаюсь в том, как мне следует действовать дальше:
<DataTemplate DataType="{x:Type vm:AwesomeViewModel}">
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style>
#### WHAT I SHOULD PUT HERE?
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
<DataTemplate x:Key="SummaryTemplate">
<vw:SummaryViewScreen />
</DataTemplate>
<DataTemplate x:Key="DetailedTemplate">
<vw:DetailedViewScreen />
</DataTemplate>
EDIT: сначала я пытался использовать DataTemplateSelector
, но так как он не реагирует на PropertyChanged, мне пришлось использовать DataTriggers.
1 ответ:
Используйте
DataTrigger
для переключенияContentTemplate
:<DataTemplate DataType="{x:Type vm:AwesomeViewModel}"> <ContentControl Content="{Binding}"> <ContentControl.Style> <Style TargetType="ContentControl"> <Setter Property="ContentTemplate" Value="{StaticResource DetailedTemplate}"/> <Style.Triggers> <DataTrigger Binding="{Binding DisplaySummary}" Value="True"> <Setter Property="ContentTemplate" Value="{StaticResource SummaryTemplate}"/> </DataTrigger> </Style.Triggers> </Style> </ContentControl.Style> </ContentControl> </DataTemplate>