Chr*_*ris 5 c# wpf anchor listbox multi-select
我在我的智慧的尽头试图弄清楚这一点。我在 WPF 方面很有经验,但我从未见过这样的事情。
我有一个包含可选 ListBoxItems 的 ListBox。列表中的项目可以通过鼠标点击或使用向上/向下箭头来选择。我正在使用 SelectionMode.Extended,所以我的列表支持多选。
问题:单击列表中的一个项目,然后按住 Shift 的同时单击另一个项目,会像您期望的那样选择正确的项目范围。不幸的是,使用向上/向下箭头无法正常工作 - 相反,选择的范围似乎总是基于最后一个 CLICKED 项目,而不是使用箭头键选择的项目。
例如:
[Item 1] <- Click this item
[Item 2] <- Use the down arrow to select this item
[Item 3] <- Shift-Click this item
Run Code Online (Sandbox Code Playgroud)
您可能希望选择项目 2 和 3,而是选择所有项目(1、2 和 3)。
所有 ListBox 属性都有正确的值(即使用箭头键更新 SelectedItems 属性),我唯一的问题似乎是 ListBox 如何在内部处理 Shift-Click 选择。据我所知,我相信这与 ListBox 的“多选锚点”通过鼠标点击设置有关,但与箭头键无关。
有没有人遇到并解决过这个问题?有没有办法手动设置“多选锚点”?谢谢你的帮助!
克里斯
我已经想出了解决办法:
为了解决这个问题,您必须在更改 SelectedIndex 后将 Focus 设置为该项目:
if (SelectedIndex > 0) {
SelectedIndex--;
ListBoxItem item = ItemContainerGenerator.ContainerFromIndex(SelectedIndex) as ListBoxItem;
item.Focus();
}
Run Code Online (Sandbox Code Playgroud)
这是在列表中向下移动选择的方法。但是,您需要将焦点设置到该项目上,以便按住 Shift 键并单击选择才能将该项目识别为锚点。