2016-11-25 43 views
0

我有一個在XAML中定義的ListView,並且它的ItemsSource被設置爲代碼隱藏。 ItemsSource不是一個屬性,所以我不想將它綁定到可觀察集合。 要更新圖形用戶界面我調用ListView.Items.Refresh()方法後選定的索引已更改(我做了一些改變選擇的工作和列表視圖項目顯示結果)。 那兩種情況後,可能會發生:WPF:刷新項目後重置ListView選擇索引

  • 如果我改變通過鼠標的ListView的所選項目,選定的索引是正確的改變和刷新()方法被調用後留在其位置上;

  • 如果我通過鍵盤上的箭頭上下方向更改所選項目,所選索引始終跳轉到第一項。

我的問題是什麼我可以做,使ListView控件的選擇項指標之後選擇的項目是由鍵盤改變項目是在代碼刷新?

回答

0

而不是的SelectionChanged事件你爲什麼不嘗試的MouseLeftButtonDown事件和的KeyDown事件。

這將解決您的問題。

摘錄如下,

private void lst_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      item = lst.SelectedItem; 
      fnTask(); 
     } 

     private void lst_KeyDown(object sender, KeyEventArgs e) 
     { 
      item = lst.SelectedItem; 
      fnTask(); 
     } 
     private void fnTask() 
     { 
      lst.Items.Refresh(); 
      lst.SelectedItem = item; 
     } 
+0

我不明白,在diffetence什麼?我想,你的代碼會產生相同的結果。我會檢查這個cource並通知你。謝謝! – Aave