Я думаю, что единственный способ достичь этого - программно:
Зарегистрируйте событие DragCompleted Gridsplitter в обеих сетках в XAML и присвойте каждой сетке имя:
<GridSplitter DragCompleted="GridSplitter_DragCompleted1" Grid.Row="1" Height="4" HorizontalAlignment="Stretch" />
В CodeBehind синхронизируется высота RowDefinitions. Поскольку grisplitter влияет только на определения строк / столбцов прикрепленных строк / столбцов, мы должны синхронизировать здесь определения строк. Другие действия, такие как установка положения гридсплиттеров, не сработают.
private void GridSplitter_DragCompleted1(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
SyncRowDefinitions(Grid1, Grid2);
}
private void GridSplitter_DragCompleted2(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
SyncRowDefinitions(Grid2, Grid1);
}
private void SyncRowDefinitions(Grid sourceGrid, Grid targetGrid)
{
for (int i = 0; i < sourceGrid.RowDefinitions.Count; i++)
{
targetGrid.RowDefinitions[i].Height = sourceGrid.RowDefinitions[i].Height;
}
}
Редактировать: При необходимости вы можете синхронизировать сетки и в других случаях, например, с изменением размера (всей сетки) после его первоначальной загрузки и т. Д.