Đặt RowDefinition.Height ="Auto"
không thích hợp cho mọi trường hợp, như thường lệ chúng tôi muốn * định kích thước các hàng của chúng tôi.
Thay vì tự động/lập trình thêm và xóa các hàng khỏi danh sách, sẽ dễ dàng và an toàn hơn để kéo dài nội dung hàng đầu tiên trong hàng tiếp theo.
Điều này có thể được thực hiện bằng cách sử dụng DataTrigger để đặt Grid.RowSpan trên mục đầu tiên trên lưới. Dưới đây là một ví dụ hoàn chỉnh - chỉ cần dán nó vào một cửa sổ WPF mới để xem nó hoạt động.
<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>
Nguồn
2012-02-05 00:44:08
có thể trùng lặp của [Ẩn hàng lưới trong WPF] (http://stackoverflow.com/questions/2502178/hide-grid-row-in-wpf) – Palec