列表框Shift-Click多选锚点未正确设置

我正在努力解决这个问题。 我在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(); } 

这是您在列表中向下移动选择的方式。 但是,您需要将焦点设置为项目以进行移位单击选择,以将该项目识别为锚点。

    Interesting Posts