我有像这样的列表视图
的ListView:
---------
每当我使用downarrow进行导航时,BlueHighlight会在第一个Grapes处停顿,一个虚线的矩形从第二个葡萄开始,在第三个葡萄处停顿,然后BlueHighlight从Apple恢复。这似乎很奇怪,当导航向上时它会变得更加奇怪。它从Apple跳到Orange或芒果。
这是否归因于虚拟化?
似乎只有重复数据(葡萄)才会产生问题。任何帮助?
答案 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实例。