3


0

WPF ListViewキーボードナビゲーションの問題

私はこのようなリストビューを持っています

リストビュー:+ ————-----

  • マンゴー

  • オレンジ

  • ぶどう

  • ぶどう

  • ぶどう

  • 林檎

  • イチゴ

'' '' '

下矢印を使用してナビゲートするたびに、BlueHighlightは最初のブドウで一時停止し、点線の長方形が2番目のブドウから始まり3番目のブドウで一時停止し、AppleからBlueHighlightが再開します。 これは奇妙に思われ、ナビゲーションが上向きになるとさらに奇妙になります。 アップルからオレンジまたはマンゴーにジャンプします。

これは仮想化によるものですか? +重複データ(ブドウ)のみが問題を引き起こしているようです。 何か手助け?

3 Answer


4


点線の長方形がキーボードフォーカスです。 青い長方形が選択されています。

キーボードを下に移動すると、現在地を追跡します。 ただし、選択は、選択されているアイテムを追跡します。 同じアイテムがリストに複数回ある場合、選択長方形はそのうちの1つにのみ表示できます。

この機能を期待どおりに機能させるには、ObservableCollection内にアイテムをラップします。 だから代わりに:

coll.Add(fruit);

あなたは書くだろう

coll.Add(new FruitWrapper(fruit));

あなたの ListBox`で、 ItemTemplate`にはラッパー内の果物を表示する単一の ContentPresenter`を含めることができます(例: `).


2


青いハイライトは選択されたデータ項目と考えてください。 ブドウは複製されるため、データ選択は変更されません。

点線の長方形はキーボードフォーカスであり、データ項目を表す `ListViewItem`のみを考慮します。

したがって、3つの `ListViewItem`オブジェクトによって表される1つのGrapesオブジェクトがあります。


1


`ObservableCollection`に同じ" Grapes "オブジェクトが3回あります。同じ参照を持つオブジェクトを意味します。 そして、リストボックスはこれに混乱しています。 各要素は、個別のインスタンスである必要があります。