将TreeViewItem.IsEnabled绑定到每个TreeViewItem的ViewModel属性

时间:2016-10-11 07:56:33

标签: wpf data-binding treeviewitem

我有一个ViewModel,它包含一个名为AllNodesAndEntries的可观察项集合。每个项目都有一个布尔属性IsEnabled。现在,我想在TreeView中显示项目,并将每个TreeViewItem的IsEnabled属性绑定到ViewModel的基础项的IsEnabled属性。 我该怎么做?

这是我的TreeView。有两种不同类型的项目(NodeEntry),因此我有一个分层和一个普通数据模板。

<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。但是,制定者不允许绑定价值......

1 个答案:

答案 0 :(得分:1)

使用setter将“IsEnabled”属性绑定到每个TreeViewItem的“IsEnabled”项属性。

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
    </Style>
 </TreeView.ItemContainerStyle>