【发布时间】:2017-07-26 09:38:09
【问题描述】:
我正在尝试启用 TreeView 控件以支持多选。
非常基本的流程有效,如果您在按住 ctrl 或 shift 的同时选择 TreeView 中的多个项目,那么它将成功地将这些项目添加到我在视图模型中的列表中。
问题在于,当实际点击TreeView 项目时,它只会在视觉上选择一项,即只有一项被标记为选中。如何使它突出显示/标记多个项目?我不明白这是在哪里控制的。
TreeViewxaml:
<TreeView x:Name="availableColumnsTreeView"
AutomationProperties.AutomationId="availableColumnsTreeView"
x:Uid="availableColumnsTreeView"
SelectedItemChanged="availableColumnsTreeView_SelectedItemChanged"
ItemsSource="{Binding Path=TreeFieldData, Mode=OneWay, Converter={StaticResource SortingConverter}, ConverterParameter='DisplayName.Text'}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Grid.Row="0">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate x:Uid="HierarchicalDataTemplate_1" ItemsSource="{Binding Path=Children, Mode=OneWay, Converter={StaticResource SortingConverter}, ConverterParameter='DisplayName.Text'}">
<TextBlock x:Uid="TextBlock_1" Text="{Binding DisplayName.Text, Mode=OneWay}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
所以“availableColumnsTreeView_SelectedItemChanged”调用得很好,但我需要它来实际突出显示选定的项目。
编辑:请在将其标记为重复之前阅读我的问题。我试图尽可能具体地说明我的问题是什么。我不是在寻找隐藏在某个驱动器文档中的多选的完整解决方案。
【问题讨论】:
-
@Fruchtzwerg 我看了一下,然后以另一种方式去做。但现在卡在我的问题中描述的问题
-
“将这些项目添加到列表中” - 您可以使用项目本身的额外属性来存储选择并简单地同步它(您添加的地方),而不是额外的列表/删除项目到这个选择列表)。作为奖励,您可以在数据模板中使用属性来执行某些操作(运行触发器、更改背景等)。
-
@Sinatr 我不确定我是否 100% 关注你。可以举个小例子吗?