DataGrid项目的无提示更新

时间:2012-01-11 10:16:07

标签: wpf datagrid scroll wpfdatagrid

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

问题在于,如果所选项目位于列表中间附近,则在多次更新后,它通常会远离可见区域。我正在寻找一种方法来更新DataGrid而无需用户注意到它,即将所选项保持在可见区域中的相同位置。

到目前为止,我有两个想法如何解决这个问题,但没有一个让我感到骄傲:

  1. 将更新过程从自动更改为手动,即将TextArea放入一些待处理更新和“更新”按钮。这是不可取的,因为 我需要与我的产品负责人重新协商。
  2. 在每次更新之前循环浏览项目以获取可见项目的集合(使用this方法)并获取所选项目在可见项目中的相对位置。然后运行更新并使用ScrollIntoView将所选项目滚动到初始位置。这种不正常的问题是程序必须每500毫秒循环一遍所有项目,这对处理器来说是相当多的工作。
  3. 我曾经使用TopIndex属性在WinForms中解决了这个问题,但在WPF中没有相应的。

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

1 个答案:

答案 0 :(得分:3)

也许您可以查看ScrollViewer及其成员,如VerticalOffset,ScrollToVerticalOffset。如果有帮助请告诉我