我有一個問題。我做了一個DataTemplate
爲TreeView
,我需要設置ToggleButton
的IsChecked
財產根據我的模型的初始值。但事實證明,使用觸發器/設置器來設置此屬性會禁用數據綁定。數據綁定和觸發器兼容性在WPF
是這樣嗎?如果是,請給我一個建議如何解決?
<DataTemplate x:Key="CellTemplate_Name">
<DockPanel x:Name="dock">
<ToggleButton x:Name="Expander"
IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource AncestorType={x:Type TreeViewItem}}}"> <--- Binding
...
<ToggleButton/>
...
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=ObjIsOpened, Converter={StaticResource DebugConverter}}" Value="true"> <--- Trigger
<Setter TargetName="Expander" Property="IsChecked" Value="true"></Setter>
</DataTrigger>
...
</DataTemplate.Triggers>
</DataTemplate>
問候,Lerax。
嗨Aviad。謝謝你的回答,它的效果非常好。但它不會修改我的模型中的ObjIsOpened值。所以,如果ObjIsOpened = true by defaul,則每個TreeViewItem在刷新後都會展開。我認爲MultiBinding可以提供幫助嗎?你怎麼看? – user101375
什麼問題正是,在點擊切換按鈕不會改變ObjIsOpened,或在代碼改變ObjIsOpened不影響GUI?如果是前者,嘗試添加'模式= TwoWay'到綁定,如果是後者,你必須實現某種形式的變更通知在模型中,最常見的方式是落實'INotifyPropertyChanged'在你的類,每當ObjIsOpened設置,火那個事件。 –
我的不好...「Mode = TwoWay」修復了這個問題。 – user101375