【问题标题】:WPF: Reset ListView selected index after items refreshedWPF:刷新项目后重置 ListView 选定索引
【发布时间】:2017-04-09 18:20:44
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wpf listview code-behind


    【解决方案1】:

    你为什么不尝试 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;
            }
    

    【讨论】:

    • 我不明白,有什么区别?我认为您的代码会产生相同的结果。我会检查这个并通知你。谢谢!
    猜你喜欢
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多