Разница между Visibility.Collapsed и Visibility.Hidden

Каковы различия между Visibility.Collapsed а также Visibility.Hidden в WPF?

4 ответа

Решение

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

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

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

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

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

Смотрите: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx

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

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

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

рухнул

Теперь поменяй второй Labelvisibility в Hiddden,

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

Выход скрыт:

скрытый

Так просто.

Даже если немного старая тема, для тех, кто все еще ищет различия:

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

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

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

Одним предложением: скрытый элемент управления по-прежнему занимает место , а свернутый — нет.

Другие вопросы по тегам