Quais são as diferenças entre Visibility.Collapsed
e Visibility.Hidden
no WPF?
Quais são as diferenças entre Visibility.Collapsed
e Visibility.Hidden
no WPF?
Respostas:
A diferença é que Visibility.Hidden
oculta o controle, mas reserva o espaço que ocupa no layout. Por isso, torna o espaço em branco em vez do controle.
Visibilty.Collapsed
não processa o controle e não reserva o espaço em branco. O espaço que o controle ocuparia é "recolhido", daí o nome.
O texto exato do MSDN:
Recolhido : não exiba o elemento e não reserve espaço para ele no layout.
Oculto : não exiba o elemento, mas reserve espaço para o elemento no layout.
Visível : exibe o elemento.
Consulte: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Visibilidade: oculto versus recolhido
Considere o seguinte código, que apenas mostra three Labels
e tem o segundo Label
visibility
como 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>
Saída recolhida:
Agora mude o segundo Label
visibility
para Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Saída oculta:
Tão simples como isso.
Mesmo que seja um pouco antigo, para quem ainda procura as diferenças:
Além do layout (espaço) ocupado em Oculto e não ocupado em Recolhido, há outra diferença.
Se tivermos controles personalizados dentro desse controle principal 'Recolhido', na próxima vez que o definirmos como Visível, ele "carregará" todos os controles personalizados. Não será pré-carregado quando a janela for iniciada.
Quanto a 'Hidden', ele carregará todos os controles personalizados + controle principal que definimos como ocultos quando a "janela" é iniciada.