为每个 TreeViewItem 绑定 TreeViewItem.IsEnabled 到 ViewModel 属性
Bind TreeViewItem.IsEnabled to ViewModel property for each TreeViewItem
我有一个 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。但是设置器不允许绑定值...
使用 setter 将 "IsEnabled" 属性 绑定到每个 TreeViewItem 的 "IsEnabled" 项 属性。
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
</Style>
</TreeView.ItemContainerStyle>
我有一个 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。但是设置器不允许绑定值...
使用 setter 将 "IsEnabled" 属性 绑定到每个 TreeViewItem 的 "IsEnabled" 项 属性。
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
</Style>
</TreeView.ItemContainerStyle>