3 ответов:
разница в том, что
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"/>выход Скрытый:
вот так просто.
даже если немного старая нить, для тех, кто все еще ищет различия:
помимо макета (пространства), взятого в скрытом и не взятом в свернутом виде, есть еще одно отличие.
Если у нас есть пользовательские элементы управления внутри этого "свернутого" основного элемента управления, в следующий раз, когда мы установим его видимым, он "загрузит" все пользовательские элементы управления. Он не будет предварительно загружаться при запуске окна.
Что касается "скрытого", он загрузит все пользовательские элементы управления + основной элемент управления, который мы установили как скрыто при запуске "окна".


Comments