Каковы различия между Visibility.Collapsed
и Visibility.Hidden
в WPF?
Каковы различия между Visibility.Collapsed
и Visibility.Hidden
в WPF?
Ответы:
Разница в том, что Visibility.Hidden
скрывает элемент управления, но резервирует пространство, занимаемое в макете. Таким образом, он отображает пробелы вместо элемента управления.
Visibilty.Collapsed
не отображает элемент управления и не резервирует пробел. Пространство, которое займет элемент управления, «свернуто», отсюда и название.
Точный текст из MSDN:
Свернуто : Не отображать элемент и не резервировать место для него в макете.
Скрытый : не отображать элемент, но зарезервировать место для элемента в макете.
Видимый : Показать элемент.
Смотрите: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Видимость: скрыто против свернуто
Рассмотрим следующий код, который только показывает three Labels
и имеет второй Label
visibility
как Collapsed
:
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Center">
<StackPanel.Resources>
<Style TargetType="Label">
<Setter Property="Height" Value="30" />
<Setter Property="Margin" Value="0"/>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="1" />
</Style>
</StackPanel.Resources>
<Label Width="50" Content="First"/>
<Label Width="50" Content="Second" Visibility="Collapsed"/>
<Label Width="50" Content="Third"/>
</StackPanel>
Выход свернулся:
Теперь измените второй Label
visibility
на Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Выход скрыт:
Так просто, как, что.
Даже если немного старая тема, для тех, кто все еще ищет различия:
Помимо макета (пространства), взятого в Hidden и не взятого в Collapsed, есть еще одно отличие.
Если у нас есть собственные элементы управления внутри этого основного элемента управления «Свернутый», в следующий раз, когда мы установим для него значение Visible, он будет «загружать» все пользовательские элементы управления. Он не будет предварительно загружаться при запуске окна.
Что касается «Скрытого», он загрузит все пользовательские элементы управления + основной элемент управления, который мы установили как скрытый при запуске «окна».