前端代码:
后端代码:
private void DgTo_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
ScrollChanged(dgTo, dgSource, e);
}
void ScrollChanged(DataGrid dg1, DataGrid dg2, ScrollChangedEventArgs e)
{
if (e.HorizontalChange != 0.0f)
{
ScrollViewer sv = null;
Type t = dg1.GetType();
try
{
sv = t.InvokeMember("InternalScrollHost", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, null, dg2, null) as ScrollViewer;
sv.ScrollToHorizontalOffset(e.HorizontalOffset);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
if (e.VerticalChange != 0.0f)
{
ScrollViewer sv = null;
Type t = dg1.GetType();
try
{
sv = t.InvokeMember("InternalScrollHost", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, null, dg2, null) as ScrollViewer;
sv.ScrollToVerticalOffset(e.VerticalOffset);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void DgSource_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
ScrollChanged(dgSource, dgTo, e);
}
转载:https://www.cnblogs.com/cvol/p/10647793.html
InvokeMember相关资料:https://blog.csdn.net/zjlovety/article/details/7038465
datagrid官方资料:https://referencesource.microsoft.com/#PresentationFramework/src/Framework/System/Windows/Controls/DataGrid.cs,6aee7202a7cddbd7