У чому полягають відмінності між 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"/>
Прихований вихід:
Так просто.
Незважаючи на трохи стару нитку, для тих, хто все ще шукає відмінності:
Окрім макета (простору), взятого у "Прихованому" та не взятого в "Згорнутий", є ще одна відмінність.
Якщо в цьому головному контролі "Згорнутий" є спеціальний елемент керування, наступного разу, коли ми встановимо його на Visible, він "завантажить" всі спеціальні елементи управління. Він не буде попередньо завантажений при запуску вікна.
Що стосується "Прихованого", він завантажить усі користувацькі елементи керування + основне управління, яке ми встановимо як приховане при запуску "вікна".