Ustawienie RowDefinition.Height ="Auto"
nie nadaje się do wszystkich przypadków, ponieważ często chcemy * rozmiaru naszych wierszy.
Zamiast dynamicznie/programowo dodawać i usuwać wiersze z listy, łatwiejsze i bezpieczniejsze jest rozciąganie zawartości pierwszych wierszy w kolejnych wierszach.
Można to zrobić za pomocą narzędzia DataTrigger, aby ustawić Grid.RowSpan na pierwszym elemencie siatki. Poniżej znajduje się pełny przykład - wystarczy wkleić go do nowego okna WPF, aby zobaczyć je w akcji.
<Grid>
<Grid.Resources>
<BooleanToVisibilityConverter x:Key="visConverter"></BooleanToVisibilityConverter>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Background="Orange">
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=toggle1, Path=IsChecked}" Value="False">
<Setter Property="Grid.RowSpan" Value="3"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
<GridSplitter Grid.Row="1" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Stretch" Height="3"
Visibility="{Binding ElementName=toggle1, Path=IsChecked, Converter={StaticResource visConverter}}"></GridSplitter>
<Grid Name="bottomGrid" Grid.Row="2" Background="LightBlue"
Visibility="{Binding ElementName=toggle1, Path=IsChecked, Converter={StaticResource visConverter}}">
</Grid>
<ToggleButton Name="toggle1" VerticalAlignment="Top">Hide/Show</ToggleButton>
</Grid>
Możliwa duplikat [Ukryj wiersz siatki w WPF] (http://stackoverflow.com/questions/2502178/hide-grid-row-in-wpf) – Palec