【发布时间】:2014-11-01 19:59:30
【问题描述】:
我做了一个树视图示例,希望得到如下所示的结果:
有一组复选框(绿色、黄色和红色)并被选中。然后,有一个树视图。 如您所见,如果其中一个子节点包含红色/黄色,则其父节点也将变为相同颜色节点。比如 A 类的节点是红色的,因为学生 3 的节点是红色的。
如何在WPF c#中实现过滤树视图功能?
示例结果,
如果我取消选中绿色复选框,结果将是:
如果我取消选中绿色和黄色,结果将是:
可以在这里获取树视图示例
XAML 主窗口
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Vertical">
<CheckBox Content="Green" Margin="2" />
<CheckBox Content="Yellow" Margin="2" />
<CheckBox Content="Red" Margin="2" IsChecked="True" />
</StackPanel>
<TreeView ItemsSource="{Binding ClassList}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type loc:Class}" ItemsSource="{Binding Students}">
<Border Width="150" BorderThickness="1" CornerRadius="2" Margin="2" Padding="2" >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Name}" FontWeight="Bold"></TextBlock>
<Image Margin="2" Source="{Binding ImagePath}"></Image>
</StackPanel>
</Border>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type loc:Student}">
<Border Width="132" CornerRadius="2" Margin="1" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="26"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Margin="2" Text="{Binding Name}" ToolTip="{Binding ToolTip}"></TextBlock>
<Image Grid.Column="1" Margin="2" Source="{Binding ImagePath}"></Image>
</Grid>
</Border>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</StackPanel>
【问题讨论】:
-
你在你的 ViewModel 中使用一个集合来填充你的 TreeView 的数据吗?如果是这样,请将其添加到您的问题中。
-
@André Silva 嗨,是的,我已将 ObservableCollection 与 treeview 一起使用,示例源代码已上传。
标签: c# wpf user-controls treeview