c# - TreeView 中的多项选择
问题描述
我想标记几件事并使用键盘上的“删除”按钮将其删除,这样我就不必一一删除所有内容
- 可以用“Ctrl + Click”或“Ctrl + ArrowDown”(通常的 windows 键)标记多个单位
- 单击键盘上的“删除”按钮可以删除所有标记的单位
标记几个单元的部分是我无法实现的。删除部分应该不难。
目前树看起来像这样:
<TreeView Name="plantsTree" Background="{StaticResource PlantConfiguratorBackground}" VerticalAlignment="Stretch" ItemsSource="{Binding PlantTrees}" Grid.Column="0"
KeyUp="plantsTree_KeyUp" Margin="0,0,5,0" SelectedItemChanged="plantsTree_SelectedItemChanged">
<TreeView.Resources>
<HierarchicalDataTemplate x:Key="dtBaseTree" ItemsSource="{Binding Path=SubItems, Converter={x:Static local:Converters.OrderByIdx}}" >
<StackPanel Orientation="Horizontal">
<Image Width="18" Height="18" Source="{Binding Path=ConfigIcon}"/>
<TextBlock Text=" "/>
<local:TextBoxWithCommandBoundContextMenu /> //this is just a textbox
</StackPanel>
</HierarchicalDataTemplate>
//there are 9 HierarchicalDataTemplates like this one above...
<HierarchicalDataTemplate>...</HierarchicalDataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="False"/>
<EventSetter Event="RequestBringIntoView" Handler="TreeViewItem_RequestBringIntoView"/>
<EventSetter Event="PreviewMouseDown" Handler="SelectionChange"/>
</Style>
</TreeView.ItemContainerStyle>
基本上我希望能够使用 Ctrl + 单击来选择树视图中的许多元素。这能过得去吗。
ListView 可以通过。但不确定TreeView。如果不能,这可以以某种方式表示为 ListView。
解决方案
回答我在这里找到的问题,源代码可在 github 上获得,也可以用作 nuget 包: https ://unclassified.software/en/source/multiselecttreeview
推荐阅读
- sonarqube - sonarqube-8.6.1 无法在 Windows 中启动
- python - 拥抱脸管道的多处理/多线程
- php - 多级类别——单数组到多维数组
- java - 我是否需要使用数据传输对象将表单输入反序列化到使用 JPA 的实体对象?
- c++ - Azure Kinect - 深度图像到具有一定距离的对象的多边形形状?
- formatting - Fortran 格式打印
- r - 如何在一个表的不同数据组之间运行 ANOVA?
- powershell - 查询多台机器上的 NetAdapter
- python-3.x - 在不触发 valueChanged 的情况下更改 QSpinBox 的值
- node.js - Mongoose 从对象数组中删除对象