WPFのVisibility.Collapsed
とVisibility.Hidden
の違いは何ですか?
違いは、Visibility.Hidden
はコントロールを非表示にしますが、レイアウトで占有するスペースを確保することです。したがって、コントロールの代わりに空白をレンダリングします。 Visibilty.Collapsed
はコントロールをレンダリングせず、は空白を予約しません。コントロールが占有するスペースは「縮小」されているため、名前になります。
MSDNの正確なテキスト:
Collapsed:要素を表示せず、レイアウトに要素用のスペースを確保しません。
Hidden:要素を表示しませんが、レイアウト内の要素のためにスペースを確保します。
Visible:要素を表示します。
参照: http://msdn.Microsoft.com/en-us/library/system.windows.visibility.aspx
表示:非表示と非表示
three Labels
のみを示し、2番目のLabel
name__がvisibility
name__としてCollapsed
name__である次のコードを検討してください。
<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>
出力折りたたみ:
次に、2番目のLabel
visibility
name__をHiddden
name__に変更します。
<Label Width="50" Content="Second" Visibility="Hidden"/>
出力非表示:
それと同じくらい簡単。
少し古いスレッドですが、まだ違いを探している人のために:
Hiddenで取得され、Collapsedで取得されないレイアウト(スペース)以外に、別の違いがあります。
この「折りたたみ」メインコントロール内にカスタムコントロールがある場合、次回Visibleに設定すると、すべてのカスタムコントロールが「ロード」されます。ウィンドウの開始時にプリロードされません。
「非表示」については、「ウィンドウ」が開始されたときに非表示として設定したすべてのカスタムコントロールとメインコントロールを読み込みます。