我正在努力解决这个问题.我在
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
您可以选择项目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();
}
这是您在列表中向下移动选择的方法.但是,您需要将焦点设置为项目以进行移位单击选择,以将该项目识别为锚点.