Estoy intentando sincronizar la posición horizontal de desplazamiento de 2 WPF DataGrid controles.posiciones Sincronización de desplazamiento para 2 DataGrids WPF
Me inscribo a la ScrollChanged caso de la primera cuadrícula de datos:
<toolkit:DataGrid x:Name="SourceGrid" ScrollViewer.ScrollChanged="SourceGrid_ScrollChanged">
tengo una segunda cuadrícula de datos:
<toolkit:DataGrid x:Name="TargetGrid">
En el controlador de eventos yo estaba tratando de utilizar el IScrollInfo.SetHorizontalOffset
, pero lamentablemente, DataGrid no expone IScrollInfo
:
private void SourceGrid_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
((IScrollInfo)TargetGrid).SetHorizontalOffset(e.HorizontalOffset);
// cast to IScrollInfo fails
}
¿Hay alguna otra manera de lograr esto? ¿O hay otro elemento en TargetGrid que expone el necesario IScrollInfo
para lograr la sincronización de las posiciones de desplazamiento?
BTW, soy utilizando columnas congeladas, por lo que no puedo ajustar ambos controles DataGrid con ScrollViewers.
Sí. Aunque hice lo mismo de la misma manera en el pasado. Simplemente parece que no deberíamos tener que hackear el árbol visual de esta manera. Simplemente otra forma en que WPF es áspero en los bordes. – PeterAllenWebb
Tenga cuidado cuando el usuario cambie los temas visuales: controle y luego obtenga nuevas plantillas (= nuevos árboles visuales), y mantendrá la referencia a un visualizador de desplazamiento incorrecto. Debería reaccionar en OnApplyTemplate y buscar el ScrollViewer real cada vez que se invoca. Consulte http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.onapplytemplate.aspx –