【问题标题】:HierarchicalDataTemplate TreeviewItemHierarchicalDataTemplate TreeviewItem
【发布时间】:2010-09-17 06:33:43
【问题描述】:

我有以下 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 属性,以便每次都更新(设置为可见或折叠)项目被选中/取消选中?

【问题讨论】:

  • 您希望它如何工作?更改选择时隐藏树中的项目似乎违反直觉。

标签: c# treeview binding


【解决方案1】:

您将使用样式设置器来控制项目的可见性。

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

<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>

但这并没有减少它的反直觉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多