Quelles sont les différences entre Visibility.Collapsed
et Visibility.Hidden
dans WPF?
Quelles sont les différences entre Visibility.Collapsed
et Visibility.Hidden
dans WPF?
Réponses:
La différence est que cela Visibility.Hidden
masque le contrôle, mais réserve l'espace qu'il occupe dans la disposition. Il rend donc les espaces au lieu du contrôle.
Visibilty.Collapsed
ne rend pas le contrôle et ne réserve pas d'espace. L'espace que le contrôle prendrait est «effondré», d'où le nom.
Le texte exact du MSDN:
Réduit : n'affiche pas l'élément et ne lui réserve pas d'espace dans la présentation.
Masqué : n'affiche pas l'élément, mais réserve de l'espace pour l'élément dans la disposition.
Visible : affichez l'élément.
Voir: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Visibilité: Hidden Vs Collapsed
Envisagez de suivre le code qui affiche uniquement 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:
Changez maintenant le second Label
visibility
en Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Sortie cachée:
Aussi simple que cela.
Même si un fil un peu ancien, pour ceux qui recherchent toujours les différences:
Mis à part la disposition (espace) prise en caché et non prise en repli, il y a une autre différence.
Si nous avons des contrôles personnalisés à l'intérieur de ce contrôle principal «Réduit», la prochaine fois que nous le définirons sur Visible, il «chargera» tous les contrôles personnalisés. Il ne se pré-chargera pas au démarrage de la fenêtre.
Quant à 'Hidden', il chargera tous les contrôles personnalisés + le contrôle principal que nous définissons comme caché lorsque la "fenêtre" est lancée.