TreeView 中的多项选择
Multiple selection inside a 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 + 单击 select 树视图中的许多元素。
这个可以吗
用ListView是可以的。
但不确定 TreeView。
如果不能,这可以以某种方式表示为 ListView。
我在这里找到了我的问题的答案,源代码在 github 上可用,也可以用作 nuget 包:
https://unclassified.software/en/source/multiselecttreeview
我想标记几个东西,然后用键盘上的“删除”按钮删除它们,这样我就不必一个一个地删除所有东西
- 几个单元可以用“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 + 单击 select 树视图中的许多元素。 这个可以吗
用ListView是可以的。 但不确定 TreeView。 如果不能,这可以以某种方式表示为 ListView。
我在这里找到了我的问题的答案,源代码在 github 上可用,也可以用作 nuget 包: https://unclassified.software/en/source/multiselecttreeview