我有一个ContentControl
需要ContentTemplate
动态设置的。
所以我决定写 2 DataTemplates
,然后设置我的样式ContentControl
,以便在我的视图模型中的布尔依赖属性更改(真/假)时触发触发器并设置正确的模板(dt1/dt2)。
但问题是如果 Boolean 属性主要设置为true
,则数据模板将始终为dt1
,并且将属性更改为false
不会将模板更改为dt2
。
由于数据触发器绑定到布尔依赖属性,不应该更改属性导致触发触发器吗?
笔记:
- 有一个按钮
MyView
可以改变BooleanDependencyProp
它的点击事件。 MyViewModel
继承自实现INotifyPropertyChanged
.
xml:
<UserControl x:Class="Views.MyView">
...
<StackPanel>
<ContentControl Content="{Binding RelativeSource={RelativeSource AncestorType=MyView}, Path=MyViewModel}">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding BooleanDependencyProp}" Value="true">
<Setter Property="ContentTemplate">
<Setter.Value>
<dt1 ... />
</Setter.Value>
</Setter>
<DataTrigger Binding="{Binding BooleanDependencyProp}" Value="false">
<Setter Property="ContentTemplate">
<Setter.Value>
<dt2 ... />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</StackPanel>