【问题标题】:Silent update of DataGrid itemsDataGrid 项的静默更新
【发布时间】:2012-01-11 10:16:07
【问题描述】:

我有一个 .NET 4.0 WPF DataGrid,其中包含大约 2,000 个排序项和一个选定项。 DataGrid 每 500 毫秒从一个单独的线程更新一次,从而导致添加和/或删除项目。每次更新后,项目集合都会被排序。

问题在于,如果选定的项目靠近列表的中间,它通常会在几次更新后远离可见区域。我正在寻找一种在用户不注意的情况下更新 DataGrid 的方法,即将所选项目保持在可见区域中的相同位置。

到目前为止,我有 2 个想法来解决这个问题,但没有一个让我感到自豪:

  1. 将更新过程从自动更改为手动,即放置一个带有许多待处理更新的 TextArea 和一个“更新”按钮。这是不可取的,因为 我需要与我的产品负责人重新协商。
  2. 在每次更新之前循环遍历项目以获取可见项目的集合(使用this 方法)并获取所选项目在可见项目中的相对位置。然后运行更新并使用ScrollIntoView 将所选项目滚动到初始位置。这种做法的问题在于,程序必须每 500 毫秒循环一次所有项目,这对处理器来说是相当大的工作量。

我以前在 WinForms 中使用 TopIndex 属性解决了这个问题,但在 WPF 中没有等效的。

总而言之,任何关于如何在已排序且经常更新的 DataGrid 中添加/删除项目而无需用户追逐感兴趣的项目的想法将不胜感激。

【问题讨论】:

    标签: wpf datagrid scroll wpfdatagrid


    【解决方案1】:

    也许您可以看看 ScrollViewer 及其成员,例如 VerticalOffset、ScrollToVerticalOffset。让我知道是否有帮助

    【讨论】:

    • +1:我也建议这样做。记住最后一个位置并在更新后滚动到最后一个已知位置...
    • 它非常棒,正是我一直在寻找的。非常感谢,先生们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多