2016-11-25 120 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