Разница между Visibility.Collapsed и Visibility.Hidden - PullRequest
264 голосов
/ 20 мая 2009

В чем различия между Visibility.Collapsed и Visibility.Hidden в WPF?

Ответы [ 3 ]

398 голосов
/ 20 мая 2009

Разница в том, что Visibility.Hidden скрывает элемент управления, но резервирует пространство, занимаемое в макете. Таким образом, он отображает пробелы вместо элемента управления. Visibilty.Collapsed не отображает элемент управления , а не резервирует пробел. Пространство, которое займет элемент управления, «свернуто», отсюда и название.

Точный текст из MSDN:

Свернуто : Не отображать элемент и не резервировать место для него в макете.

Скрытый : не отображать элемент, но зарезервировать место для элемента в макете.

Видимый : Показать элемент.

См .: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx

52 голосов
/ 11 февраля 2016

Видимость: скрытый против рухнувшего

Рассмотрим следующий код, который показывает только 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>

Свернутый выход:

Collapsed

Теперь измените второе Label visibility на Hiddden.

<Label Width="50" Content="Second" Visibility="Hidden"/>

Выход скрыт:

hidden

Все так просто.

7 голосов
/ 11 мая 2016

Несмотря на немного старую нить, для тех, кто все еще ищет различия:

Помимо макета (пространства), взятого в Hidden и не взятого в Collapsed, есть еще одно отличие.

Если у нас есть собственные элементы управления внутри этого основного элемента управления «Свернутый», в следующий раз, когда мы установим его на Visible, он «загрузит» все пользовательские элементы управления. Он не будет предварительно загружаться при запуске окна.

Что касается «Скрытого», он загрузит все пользовательские элементы управления + основной элемент управления, который мы установили как скрытый при запуске «окна».

...