我有一个.NET 4.0 WPF DataGrid,包含大约2,000个已排序项和一个选定项。 DataGrid每隔500毫秒从一个单独的线程更新,导致添加和/或删除项目。每次更新后,项目集合都会被排序。
问题在于,如果所选项目位于列表中间附近,则在多次更新后,它通常会远离可见区域。我正在寻找一种方法来更新DataGrid而无需用户注意到它,即将所选项保持在可见区域中的相同位置。
到目前为止,我有两个想法如何解决这个问题,但没有一个让我感到骄傲:
ScrollIntoView
将所选项目滚动到初始位置。这种不正常的问题是程序必须每500毫秒循环一遍所有项目,这对处理器来说是相当多的工作。我曾经使用TopIndex属性在WinForms中解决了这个问题,但在WPF中没有相应的。
总而言之,任何关于如何在不需要用户追逐感兴趣的项目的情况下在已排序且经常更新的DataGrid中添加/删除项目的想法将非常感激。
答案 0 :(得分:3)
也许您可以查看ScrollViewer及其成员,如VerticalOffset,ScrollToVerticalOffset。如果有帮助请告诉我