WPF-расширитель сетки расширяет пространство при перемещении гридсплиттера
У меня есть следующий.XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Expander Grid.Row="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="5"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0"/>
<GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" ShowsPreview="true" ResizeDirection="Rows" Height="5"/>
</Grid>
</Expander>
<Expander Grid.Row="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="5"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0"/>
<GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" ShowsPreview="true" ResizeDirection="Rows" Height="5"/>
</Grid>
</Expander>
Есть 2 расширителя с гридсплиттерами. Я хочу добиться следующих 2 вещей:
(1) Всякий раз, когда один расширитель разрушается, другой расширитель должен заполнить пространство
(2) Всякий раз, когда перемещается один гридсплиттер, 2 расширителя автоматически регулируют свою высоту, чтобы заполнить пространство.
Ожидается, что поведение будет аналогично поведению окна обзора диспетчера ресурсов Windows. Любой совет и понимание приветствуется
1 ответ
Посмотрите, если это то, что вам нужно:
<Window ...>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Expander Grid.Row="0" Collapsed="Expander_Collapsed_1">
<ListView x:Name="Lv1"/>
</Expander>
<GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" ShowsPreview="true" ResizeDirection="Rows" Height="5" Background="#FFB82424"/>
<Expander Grid.Row="2" Collapsed="Expander_Collapsed_1">
<ListView x:Name="Lv2" Grid.Row="0"/>
</Expander>
<GridSplitter Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Top" ShowsPreview="true" ResizeDirection="Rows" Height="5" Background="#FFC51A1A"/>
</Grid>
</Window>
Код:
private void Expander_Collapsed_1(object sender, RoutedEventArgs e)
{
DependencyObject dobj = VisualTreeHelper.GetParent(sender as Expander);
while (!(dobj is Grid))
dobj = VisualTreeHelper.GetParent(dobj);
int i = Grid.GetRow(sender as Expander);
Grid grd = dobj as Grid;
grd.RowDefinitions[i].Height = GridLength.Auto;
}