我有一个ViewModel,它包含一个名为AllNodesAndEntries
的可观察项集合。每个项目都有一个布尔属性IsEnabled
。现在,我想在TreeView中显示项目,并将每个TreeViewItem的IsEnabled
属性绑定到ViewModel的基础项的IsEnabled
属性。 我该怎么做?
这是我的TreeView。有两种不同类型的项目(Node
和Entry
),因此我有一个分层和一个普通数据模板。
<TreeView ItemsSource="{Binding AllNodesAndEntries}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:Node}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:Entry}">
<TextBlock Text="{Binding Name}""/>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<!-- How do I bind to TreeViewItem.IsEnabled to IsEnabled? -->
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
我似乎无法在TreeView.ItemContainerStyle
内执行此操作,因为我只能定义setter。但是,制定者不允许绑定价值......
答案 0 :(得分:1)
使用setter将“IsEnabled”属性绑定到每个TreeViewItem的“IsEnabled”项属性。
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
</Style>
</TreeView.ItemContainerStyle>