WPF:刷新项目后重置ListView选定的索引

时间:2016-11-25 11:00:30

标签: wpf listview code-behind

我在XAML中定义了一个ListView,它的ItemsSource设置为代码隐藏。 ItemsSource不是属性,所以我不想将它绑定到可观察的集合。 要更新GUI,我在选择的索引更改后调用 ListView.Items.Refresh()方法(我做了一些关于选择更改的工作,列表视图项显示结果)。 之后可能会出现两种情况:

  • 如果我通过鼠标更改ListView的选定项目,则选择的索引会在调用Refresh()方法后更改并保持原位;

  • 如果我在键盘上上下按箭头更改所选项目,则所选索引始终跳转到第一项。

我的问题是,在键盘更改所选项目并在代码中刷新项目后,我可以做什么来制作ListView的选定项目索引?

1 个答案:

答案 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;
        }