我有以下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或折叠)一个项目被选中/取消选择?
答案 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>
但这并不会使其反直觉。