我在XAML中定义了一个ListView,它的ItemsSource设置为代码隐藏。 ItemsSource不是属性,所以我不想将它绑定到可观察的集合。 要更新GUI,我在选择的索引更改后调用 ListView.Items.Refresh()方法(我做了一些关于选择更改的工作,列表视图项显示结果)。 之后可能会出现两种情况:
如果我通过鼠标更改ListView的选定项目,则选择的索引会在调用Refresh()方法后更改并保持原位;
如果我在键盘上上下按箭头更改所选项目,则所选索引始终跳转到第一项。
我的问题是,在键盘更改所选项目并在代码中刷新项目后,我可以做什么来制作ListView的选定项目索引?
答案 0 :(得分:0)
为什么不尝试 MouseLeftButtonDown 事件和 KeyDown 事件,而不是 SelectionChanged 事件。
这将解决您的问题。
摘录如下,
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;
}