我有一个树状视图,想绑定具有IsFolder = true值的类
我尝试使用
设置样式identity
但遗憾的是,这仍然会创建一个Listview项
节点类
<Window.Resources>
<Style x:Key="HideElement" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsFolder}" Value="false">
<Setter Property="Visibility" Value="Hidden"/>
<Setter Property="Width" Value="0"/>
<Setter Property="Height" Value="0"/>
<Setter Property="FontSize" Value="1"/>
<Setter Property="Opacity" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<TreeView Name="FolderTree" Grid.Column="0" SelectedItemChanged="FolderTree_SelectedItemChanged" >
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Node}" ItemsSource="{Binding Nodes}">
<TextBlock Text="{Binding Name}" Style="{StaticResource HideElement}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
我希望它仅显示具有IsFolder == true的结果,并且我不想为那些具有IsFolder == false的元素显示不可见元素
答案 0 :(得分:0)
为什么不绑定到另一个过滤源?
public class Node
{
public Node()
{
Nodes = new ObservableCollection<Node>();
}
public bool IsFolder { get; set; }
public string Name { get; set; }
public ObservableCollection<Node> Nodes { get; set; }
public ObservableCollection<Node> Folders { get; set; }
public void Add(Node node)
{
Nodes.Add(node);
if (node.IsFolder)
Folders.Add(node);
}
public void Remove(Node node)
{
Nodes.Remove(node);
if (node.IsFolder)
Folders.Remove(node);
}
}
然后绑定到文件夹而不是节点。