我有一個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一樣。它初始化一次,它不能有依賴屬性,所以我無法設置任何綁定。 –