WPF ListView键盘导航问题

时间:2010-02-16 10:27:40

标签: c# wpf listview keyboard navigation

我有像这样的列表视图

的ListView:
---------

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

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

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

3 个答案:

答案 0 :(得分:4)

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

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

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

coll.Add(fruit);
你会写

coll.Add(new FruitWrapper(fruit));

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

答案 1 :(得分:2)

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

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

因此有一个Grapes对象由3个ListViewItem个对象表示。

答案 2 :(得分:1)

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