【问题标题】:ListBox Shift-Click Multi-Select Anchor is not being set properlyListBox Shift-Click Multi-Select Anchor 未正确设置
【发布时间】:2012-03-30 04:55:42
【问题描述】:

我无计可施,试图弄清楚这一点。我在 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 的“多选锚点”通过鼠标单击而不是箭头键设置有关。

以前有没有人遇到过并解决过这个问题?有没有办法手动设置“多选锚点”?感谢您的帮助!

克里斯

【问题讨论】:

    标签: c# wpf listbox anchor multi-select


    【解决方案1】:

    我已经找到了解决办法:

    为了解决这个问题,您必须在更改 SelectedIndex 后将 Focus 设置为项目:

    if (SelectedIndex > 0) {
         SelectedIndex--;
         ListBoxItem item = ItemContainerGenerator.ContainerFromIndex(SelectedIndex) as ListBoxItem;
         item.Focus();
    }
    

    这是您在列表中向下移动选择的方式。但是,您需要将焦点设置在该项目上,以便按住 shift-click 选择将该项目识别为锚点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 2017-06-18
      • 2011-09-09
      • 2022-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多