Jakie są różnice między WPF Visibility.Collapsed
i pomiędzy nimi Visibility.Hidden
?
Jakie są różnice między WPF Visibility.Collapsed
i pomiędzy nimi Visibility.Hidden
?
Odpowiedzi:
Różnica polega na tym, że Visibility.Hidden
ukrywa kontrolę, ale rezerwuje miejsce, które zajmuje w układzie. Dlatego renderuje białe znaki zamiast kontroli.
Visibilty.Collapsed
nie renderuje kontroli i nie rezerwuje białych znaków. Przestrzeń, którą miałaby kontrola, jest „zapadnięta”, stąd nazwa.
Dokładny tekst z MSDN:
Zwinięty : nie wyświetla elementu i nie rezerwuje dla niego miejsca w układzie.
Ukryty : nie wyświetla elementu, ale rezerwuje miejsce dla elementu w układzie.
Widoczny : wyświetla element.
Zobacz: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Widoczność: Ukryte Vs zwinięte
Rozważ następujący kod, który pokazuje three Labels
i ma drugi Label
visibility
jako 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>
Wyjście zwinięte:
Teraz zmień sekundę Label
visibility
na Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Wyjście ukryte:
Tak proste jak to.
Mimo że nieco stary wątek, dla tych, którzy wciąż szukają różnic:
Poza układem (przestrzenią) wykonanym w trybie Ukryty, a nie wykonanym w Zwiniętym, jest jeszcze jedna różnica.
Jeśli mamy niestandardowe elementy sterujące w tym głównym układzie zwiniętym, następnym razem, gdy ustawimy go na Widoczny, „załaduje” wszystkie niestandardowe elementy sterujące. Nie zostanie wstępnie załadowane po uruchomieniu okna.
Jeśli chodzi o „Ukryty”, załaduje on wszystkie niestandardowe elementy sterujące + główny element sterujący, który ustawiliśmy jako ukryty po uruchomieniu „okna”.