Quali sono le differenze tra Visibility.Collapsed
e Visibility.Hidden
in WPF?
Quali sono le differenze tra Visibility.Collapsed
e Visibility.Hidden
in WPF?
Risposte:
La differenza è che Visibility.Hidden
nasconde il controllo, ma riserva lo spazio che occupa nel layout. Quindi rende gli spazi bianchi invece del controllo.
Visibilty.Collapsed
non esegue il rendering del controllo e non riserva gli spazi bianchi. Lo spazio che il controllo richiederebbe è "collassato", da cui il nome.
Il testo esatto da MSDN:
Compresso : non visualizzare l'elemento e non riservare spazio per esso nel layout.
Nascosto : non visualizzare l'elemento, ma riserva spazio per l'elemento nel layout.
Visibile : visualizza l'elemento.
Vedi: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Visibilità: Hidden Vs Collapsed
Considera il seguente codice che mostra solo three Labels
e ha il secondo Label
visibility
come 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>
Uscita compressa:
Ora cambia il secondo Label
visibility
in Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Uscita nascosta:
Così semplice.
Anche se un filo un po 'vecchio, per chi cerca ancora le differenze:
A parte il layout (spazio) preso in Nascosto e non preso in Collapsed, c'è un'altra differenza.
Se all'interno di questo controllo principale "Compresso" sono presenti controlli personalizzati, la prossima volta che lo imposteremo su Visibile, "caricherà" tutti i controlli personalizzati. Non verrà pre-caricato all'avvio di Windows.
Per quanto riguarda 'Nascosto', caricherà tutti i controlli personalizzati + controllo principale che impostiamo come nascosto quando viene avviata la "finestra".