Я скрывал строку в сетке WPF, установив для свойства Height
значение 0.
Я ожидал нечто похожее на свойство Visible
.
Есть ли более подходящий способ скрыть строку?
Я скрывал строку в сетке WPF, установив для свойства Height
значение 0.
Я ожидал нечто похожее на свойство Visible
.
Есть ли более подходящий способ скрыть строку?
Вы можете установить видимость содержимого строки в "Свернутый". Это будет работать, только если для свойства 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>
Я на самом деле просто задал тот же вопрос пару дней назад, посмотрите здесь:
В основном настройка RowHeight на Auto и настройка Visibility = "Collapsed" скроют строку для вас. Единственная проблема, с которой я столкнулся, это "Поля", но это было незначительно. По крайней мере, строка была скрыта.
Просто сделайте следующее:
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;