我无计可施地试图解决这个问题。我在 WPF 方面经验丰富,但从未见过这样的事情。
我有一个包含可选 ListBoxItems 的列表框。可以通过单击鼠标或使用向上/向下箭头来选择列表中的项目。我正在使用 SelectionMode.Extended,因此我的列表支持多项选择。
问题:单击列表中的一个项目,然后按住 Shift 键并单击另一个项目,就会像您期望的那样选择正确的项目范围。不幸的是,使用向上/向下箭头无法正常工作 - 相反,选择的范围似乎总是基于最后单击的项目,而不是使用箭头键选择的项目。
例如:
[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 选择。据我所知,我相信这与通过鼠标单击而不是箭头键设置列表框的“多选锚点”有关。
以前有人遇到过并解决过这个问题吗?有没有办法手动设置“多选锚点”?感谢您的帮助!
Chris
我已经想出了解决办法:
为了解决这个问题,您必须在更改 SelectedIndex 后将 Focus 设置为该项目:
if (SelectedIndex > 0) {
SelectedIndex--;
ListBoxItem item = ItemContainerGenerator.ContainerFromIndex(SelectedIndex) as ListBoxItem;
item.Focus();
}
这是在列表中向下移动选择的方法。但是,您需要将焦点设置到该项目上,以便按住 Shift 键并单击选择才能将该项目识别为锚点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)