Was sind Unterschiede zwischen Visibility.Collapsed
und Visibility.Hidden
in WPF?
Was sind Unterschiede zwischen Visibility.Collapsed
und Visibility.Hidden
in WPF?
Antworten:
Der Unterschied besteht darin, dass Visibility.Hidden
das Steuerelement ausgeblendet wird, aber der Platz reserviert wird, den es im Layout einnimmt. Es wird also Leerzeichen anstelle des Steuerelements gerendert.
Visibilty.Collapsed
nicht die Kontrolle machen und nicht das Leerzeichen reservieren. Der Platz, den das Steuerelement einnehmen würde, ist "reduziert", daher der Name.
Der genaue Text aus dem MSDN:
Reduziert : Zeigen Sie das Element nicht an und reservieren Sie im Layout keinen Platz dafür.
Versteckt : Zeigen Sie das Element nicht an, sondern reservieren Sie Platz für das Element im Layout.
Sichtbar : Zeigen Sie das Element an.
Siehe: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Sichtbarkeit: Versteckt gegen kollabiert
Betrachten Sie folgenden Code , der nur zeigt three Labels
und hat zweite Label
visibility
als 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>
Ausgabe reduziert:
Ändern Sie nun die Sekunde Label
visibility
in Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Ausgabe ausgeblendet:
So einfach ist das.
Obwohl ein bisschen alter Thread, für diejenigen, die noch nach den Unterschieden suchen:
Abgesehen von dem Layout (Leerzeichen), das in Versteckt und nicht in Reduziert aufgenommen wurde, gibt es einen weiteren Unterschied.
Wenn dieses 'Reduzierte' Hauptsteuerelement benutzerdefinierte Steuerelemente enthält, werden beim nächsten Setzen auf Sichtbar alle benutzerdefinierten Steuerelemente "geladen". Es wird nicht vorgeladen, wenn das Fenster gestartet wird.
Was 'Versteckt' betrifft, werden alle benutzerdefinierten Steuerelemente + Hauptsteuerelemente geladen, die wir beim Starten des "Fensters" als ausgeblendet festlegen.