2010-02-16 104 views
3

我有一個ListView這樣WPF ListView的鍵盤導航問題

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

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

每當我瀏覽使用DownArrow中文,所述BlueHighlight暫停在第一葡萄,一個虛線矩形從第二葡萄開始,並在第三葡萄暫停,則BlueHighlight從蘋果恢復。這看起來很奇怪,當導航向上時它變得更奇怪。它從蘋果跳到橘子或芒果。

這是由於虛擬化嗎?
似乎只有重複的數據(葡萄)造成了問題。任何幫助?

回答

4

虛線矩形是您的鍵盤焦點。藍色矩形是您的選擇。

隨着您向下移動鍵盤焦點軌跡,您位於何處。然而,選擇跟蹤哪個項目被選中。當同一項目在列表中多次顯示時,選擇矩形只能顯示在其中一個矩形上。

爲了使您的工作方式符合您的期望,請將您的物品包裹在ObservableCollection中。因此,而不是:

coll.Add(fruit); 

你會寫

coll.Add(new FruitWrapper(fruit)); 

在你ListBoxItemTemplate可以包括單一ContentPresenter呈現包裝(如<ContentPresenter Content="{Binding Fruit}" />)裏面的水果。

+0

感謝您的回覆。今天我會嘗試一下。 – Amsakanna 2010-02-17 05:18:47

+0

嘿雷, 這工作。感謝您爲解決問題提供解決方案。包括你的名字在我的應用程序中的「特別感謝」區域:)。等待它在網上發佈。 – Amsakanna 2010-02-18 05:01:58

1

您在ObservableCollection中擁有相同的「葡萄」對象3次,我的意思是具有相同參考的對象。和Listbox混淆了這一點。每個元素應該是一個獨特的例子。

2

將藍色突出顯示爲選定的數據項。葡萄被複制,所以數據選擇不會改變。

虛線矩形是鍵盤焦點,它只關心表示數據項的ListViewItem

因此,有一個葡萄對象由3個ListViewItem對象表示。

+0

謝謝喬爾......我明白了...... – Amsakanna 2010-02-18 05:02:27