如何在WPF网格中隐藏行?

时间:2010-03-26 08:17:07

标签: wpf grid

我通过将Height属性设置为0,在WPF网格中隐藏了一行。

我期待的东西类似于Visible属性。

是否有更合适的方法来隐藏行?

3 个答案:

答案 0 :(得分:27)

您可以将行内容的可见性设置为“Collapsed”。这仅在RowDefinition的Height属性设置为“Auto”时才有效,因此行大小基于它的内容。

例如,

<Grid>  
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto"  />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>

  <Border Grid.Row="0" BorderThickness="1" BorderBrush="Red"><TextBlock>Visible Row</TextBlock></Border>
  <Border Grid.Row="1" BorderThickness="1" BorderBrush="Black" Visibility="Collapsed"><TextBlock>Hidden Row</TextBlock></Border>
  <Border Grid.Row="2" BorderThickness="1" BorderBrush="Red"><TextBlock>Visible Row</TextBlock></Border>
</Grid>

答案 1 :(得分:3)

我实际上几天前刚问过同样的问题,请看一下:

Hide grid row in WPF

基本上将RowHeight设置为Auto,然后设置Visibility =“Collapsed”将为您隐藏行。我唯一的问题是边缘,但那是次要的。至少这一行被隐藏了。

答案 2 :(得分:1)

这样做:

XAML:

<Grid.RowDefinitions>
    <RowDefinition Height="1*" x:Name="name1" />
    <RowDefinition Height="Auto" x:Name="name2" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
</Grid.RowDefinitions>

崩溃的C#:

name1.Height = new GridLength(0);
name2.Height = new GridLength(0);

C#的可见性:

name1.Height = new GridLength(1, GridUnitType.Star);
name2.Height = GridLength.Auto;