У чому полягають відмінності між 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, він "завантажить" всі спеціальні елементи управління. Він не буде попередньо завантажений при запуску вікна.
Що стосується "Прихованого", він завантажить усі користувацькі елементи керування + основне управління, яке ми встановимо як приховане при запуску "вікна".