HierarchicalDataTemplate TreeviewItem

时间:2010-09-17 06:33:44

标签: c# treeview binding

我有以下xaml:

<TreeView x:Name="tvCategoryList" Grid.Column="0" Padding="0" ItemsSource="{Binding CategoriesList}">
  <TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Items}">
      <TextBlock Text="{Binding ItemName}"/>
    </HierarchicalDataTemplate>
  </TreeView.ItemTemplate>
</TreeView>

在上面的代码中,我绑定了ObservableCollection CategoriesList,其中类CustomTreeItem具有Visibility属性。我如何更改上面的代码以绑定Visibility属性,以便每次都更新(设置为visibile或折叠)一个项目被选中/取消选择?

1 个答案:

答案 0 :(得分:0)

您可以使用样式设定器来操纵项目的可见性。

您使用的绑定可以挖掘TreeViewItem的选定属性:

<HierarchicalDataTemplate ItemsSource="{Binding Items}">
  <TextBlock Text="{Binding ItemName}">
     <TextBlock.Style>
        <Style>
           <Style.Triggers>
              <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}" 
                  Value="True">
                  <Setter Property="TextBlock.Visibility" Value="false" />
              </DataTrigger>
           </Style.Triggers>
        </Style>
     </TextBlock.Style>
  </TextBlock>
</HierarchicalDataTemplate>

但这并不会使其反直觉。