任何人都知道如何在刷新命令后保持垂直滚动位置?
我的 Datagrid 从对象列表接收绑定。
非常感谢,对不起我的英语。
任何人都知道如何在刷新命令后保持垂直滚动位置?
我的 Datagrid 从对象列表接收绑定。
非常感谢,对不起我的英语。
2个可能的解决方案:
1)尝试更新列表而不是替换它。这意味着添加新项目并删除不需要的项目。
2)您可以在刷新之前保存滚动条的状态,然后以编程方式滚动到所选项目。
我有同样的问题,这是我所做的:
ScrollViewer
你的Datagrid
/并添加一个事件:ListBox
ScrollChanged
var scrollViewer = FindScrollViewer(ListBoxOrders);
if (scrollViewer != null)
{
scrollViewer.ScrollChanged += scrollViewer_ScrollChanged;
}
//Here is the function to find the ScrollViewer:
private ScrollViewer FindScrollViewer(DependencyObject d)
{
if (d is ScrollViewer)
return d as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var sw = FindScrollViewer(VisualTreeHelper.GetChild(d, i));
if (sw != null) return sw;
}
return null;
}
private double _verticalOffset;
private void scrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
var sv = (ScrollViewer)sender;
_verticalOffset = sv.VerticalOffset;
}
scrollViewer?.ScrollToVerticalOffset(_verticalOffset);