Как скрыть строку в сетке WPF?

Я скрывал строку в сетке WPF, установив для свойства Height значение 0.

Я ожидал нечто похожее на свойство Visible.

Есть ли более подходящий способ скрыть строку?

Ответ 1

Вы можете установить видимость содержимого строки в "Свернутый". Это будет работать, только если для свойства Height для параметра RowDefinition установлено значение "Авто", поэтому размеры строк основываются на его содержании.

Например,

<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>

Ответ 2

Я на самом деле просто задал тот же вопрос пару дней назад, посмотрите здесь:

Скрыть строку сетки в WPF

В основном настройка RowHeight на Auto и настройка Visibility = "Collapsed" скроют строку для вас. Единственная проблема, с которой я столкнулся, это "Поля", но это было незначительно. По крайней мере, строка была скрыта.

Ответ 3

Просто сделайте следующее:

XAML:

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

С# для коллапса:

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

С# для видимости:

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