我有一个ContentControl
,我需要动态地将它设置为ContentTemplate
。无法动态更改内容模板
,所以我决定写2 DataTemplates
,然后我的样式这样ContentControl
一个触发器触发,并设置适当的模板(DT1/DT2)时,在我看来,模型的变化布尔依赖属性(真/假)。
但问题是,如果布尔属性主要设置为true
,数据模板总会dt1
和更改属性false
模板不会改变dt2
。
由于数据触发器绑定到布尔依赖属性,不应该更改属性结果触发触发器?
笔记:
- 有在
MyView
一个按钮,改变BooleanDependencyProp
它是 click事件。 MyViewModel
继承自接口 实现INotifyPropertyChanged
。
的XAML:
<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>
您可以查看ContentTemplateSelector属性。 –
我试过了,但是和templateSelector一样。它初始化一次,它不能有依赖属性,所以我无法设置任何绑定。 –