![](/img/trans.png)
[英]Starting Keyboard Navigation from SelectedItem in a ListView (WPF)
[英]WPF ListView Keyboard Navigation Problem
我有这样的列表视图
列表显示:
————-----
每当我使用向下箭头导航时,BlueHighlight会在第一个葡萄停顿,一个虚线矩形从第二个葡萄开始,停在第三个葡萄,然后BlueHighlight从Apple恢复。 这看起来很奇怪,并且当导航向上时,它变得更加奇怪。 它从苹果跳到橘子或芒果。
这是由于虚拟化吗?
似乎只有重复的数据(葡萄)在造成问题。 有帮助吗?
虚线矩形是您的键盘焦点。 蓝色矩形是您的选择。
当您向下移动键盘时,焦点将跟踪您所在的位置。 但是,该选择会跟踪选择了哪个项目。 当同一项目多次出现在列表中时,选择矩形只能显示在其中之一上。
为了使此工作按您期望的方式进行,请将您的项目包装在ObservableCollection中。 所以代替:
coll.Add(fruit);
你会写
coll.Add(new FruitWrapper(fruit));
在ListBox
您的ItemTemplate
可以包含一个ContentPresenter
,用于在包装器中显示水果(例如<ContentPresenter Content="{Binding Fruit}" />
)。
将蓝色突出显示视为选定的数据项。 Grapes是重复的,因此数据选择不会更改。
虚线矩形是键盘焦点,它只关心表示数据项的ListViewItem
。
因此,有一个由3个ListViewItem
对象表示的Grapes对象。
您在ObservableCollection
3次相同的“ Grapes”对象,我的意思是该对象具有相同的引用。 而Listbox对此一团糟。 每个元素都应该是一个不重要的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.