【问题标题】:WPF ListView Keyboard Navigation ProblemWPF ListView 键盘导航问题
【发布时间】:2011-01-17 08:15:33
【问题描述】:

我有一个这样的列表视图

列表视图:
——--------

  • 芒果
  • 橙色
  • 葡萄
  • 葡萄
  • 葡萄
  • 苹果
  • 草莓

每当我使用向下箭头导航时,BlueHighlight 会在第一个葡萄处暂停,虚线矩形从第二个葡萄开始并在第三个葡萄处暂停,然后 BlueHighlight 从 Apple 恢复。这看起来很奇怪,当导航向上时它变得更加奇怪。它从苹果跳到橙子或芒果。

这是由于虚拟化造成的吗?
似乎只有重复的数据(葡萄)造成了问题。有什么帮助吗?

【问题讨论】:

    标签: c# wpf listview keyboard navigation


    【解决方案1】:

    虚线矩形是您的键盘焦点。蓝色矩形是您的选择。

    当您向下移动键盘焦点跟踪您所在的位置。但是,该选择会跟踪选择了哪个项目。当同一项目多次出现在列表中时,选择矩形只能显示在其中一个上。

    要使这项工作按您期望的方式进行,请将您的项目包装在您的 ObservableCollection 中。所以而不是:

    coll.Add(fruit);
    

    你会写

    coll.Add(new FruitWrapper(fruit));
    

    在您的ListBox 中,您的ItemTemplate 可以包含一个ContentPresenter,表示包装内的水果(例如<ContentPresenter Content="{Binding Fruit}" />)。

    【讨论】:

    • 感谢您的回复。我今天会试试看。
    • 嘿,雷,这行得通。感谢您提供解决方案,除了发现问题。在我的应用程序的“特别感谢”区域中包含您的名字:)。等待它在网络上发布。
    【解决方案2】:

    将蓝色突出显示视为选定的数据项。葡萄是重复的,所以数据选择不会改变。

    虚线矩形是键盘焦点,只关心代表数据项的ListViewItem

    所以有一个 Grapes 对象由 3 个ListViewItem 对象表示。

    【讨论】:

      【解决方案3】:

      您在ObservableCollection 中拥有相同的“葡萄”对象 3 次,我的意思是具有相同引用的对象。而 Listbox 对此一无所知。每个元素都应该是一个 uncial 实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        • 2011-09-03
        • 1970-01-01
        • 2017-08-20
        • 1970-01-01
        • 2011-09-05
        相关资源
        最近更新 更多