加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ListBox Shift-Click多选锚点未正确设置

发布时间:2020-12-15 17:24:38 所属栏目:百科 来源:网络整理
导读:我正在努力解决这个问题.我在 WPF方面很有经验,但我从来没有见过这样的东西. 我有一个包含可选ListBoxItems的ListBox.可以通过单击鼠标或使用向上/向下箭头选择列表中的项目.我正在使用SelectionMode.Extended,所以我的列表支持多个选择. 问题:单击列表中的
我正在努力解决这个问题.我在 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();
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读