先说我的需求
我的一个数据源是变化很频繁的,需要datagrid实时及时的反应出来变化,并且保持位置稳定。处理这个问题我想到两个方式
1 在滚动时记录 DataGrid中数据的位置,用ScrollIntoView定位。
这个处理方式的问题在 每次用绑定 ItemsSource = null; ItemsSource = data之后 位置会重置为0。而我又没有发现一个好的方法可以设置位置。
2 获取到了 DataGrid的滚动条对象,每次滚动记录位置 并在每次用绑定之后恢复位置
我已经通过重写子类 通过 base.GetTemplateChild("VerticalScrollbar") as ScrollBar;获取到了 DataGrid的滚动条对象,但是在处理滚动条和数据的联动时发生了问题。
问题在我设定已经获取到的滚动条的value值后,DataGrid中的滚动条的UI会变化而且位置正确,但是DataGrid中的数据并没有按我想象的移动到对应的位置上。
我现在的困惑时 不知道有什么方法可以让DataGrid中的数据能按照我想的滚动到合适的位置上。这两个方法之中 走不下去的部分谁能补全解决
各路大神给点神力吧
这个还真不好搞,可以考虑一下,按照时间倒排序,这样最新的记录就一直在最上面不需要滚动
Grid.ScrollIntoView(item)