WPF ListView键盘导航问题

我有这样的列表视图

列表显示:
———

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

每当我使用downarrow进行导航时,BlueHighlight会在第一个Grapes处停顿,一个虚线的矩形从第二个葡萄开始,然后停留在第三个葡萄,然后BlueHighlight从Apple恢复。 这似乎很奇怪,当导航向上时,它变得更加奇怪。 它从Apple跳到Orange或芒果。

这是由于虚拟化吗?
似乎只有重复数据(葡萄)才会产生问题。 任何帮助?

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

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

为了使您的工作符合您的预期,请将您的项目包装在ObservableCollection中。 所以代替:

coll.Add(fruit); 

你会写的

 coll.Add(new FruitWrapper(fruit)); 

ListBox您的ItemTemplate可以包含一个ContentPresenter ,它在包装器中显示水果(例如 )。

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

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

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

ObservableCollection 3次相同的“Grapes”对象,我的意思是具有相同引用的对象。 Listbox很乱。 每个元素都应该是一个uncial实例。