Quelles sont les différences entre Visibility.Collapsed
et Visibility.Hidden
dans WPF?
La différence est que Visibility.Hidden
cache le contrôle, mais réserve l'espace qu'il occupe dans la présentation. Donc, il rend les espaces blancs au lieu du contrôle. Visibilty.Collapsed
ne rend pas le contrôle et ne réserve pas les espaces. L'espace que le contrôle prendrait est "réduit", d'où son nom.
Le texte exact du MSDN:
Réduit : ne pas afficher l'élément et ne pas lui réserver d'espace dans la présentation.
Caché : ne pas afficher l'élément, mais réserver de l'espace pour cet élément dans la présentation.
Visible : Affiche l'élément.
Voir: http://msdn.Microsoft.com/en-us/library/system.windows.visibility.aspx
Visibilité: Vs cachés réduits
Considérez le code suivant qui ne montre que three Labels
et a la seconde Label
visibility
comme 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>
_
Sortie réduite:
Remplacez maintenant le second Label
visibility
par Hiddden
.
_<Label Width="50" Content="Second" Visibility="Hidden"/>
_
Sortie masquée:
Aussi simple que cela.
Même si c'est un peu vieux fil, pour ceux qui cherchent encore les différences:
Mis à part la disposition (espace) prise dans Caché et non prise dans Collapsed, il y a une autre différence.
Si nous avons des contrôles personnalisés dans ce contrôle principal 'Collapsed', la prochaine fois que nous le définirons à Visible, il "chargera" tous les contrôles personnalisés. Il ne sera pas pré-chargé au démarrage de la fenêtre.
Quant à 'Caché', il chargera tous les contrôles personnalisés + le contrôle principal que nous avons défini comme masqué au démarrage de la "fenêtre".