web-dev-qa-db-ja.com

Visibility.CollapsedとVisibility.Hiddenの違い

WPFのVisibility.CollapsedVisibility.Hiddenの違いは何ですか?

263
Sauron

違いは、Visibility.Hiddenはコントロールを非表示にしますが、レイアウトで占有するスペースを確保することです。したがって、コントロールの代わりに空白をレンダリングします。 Visibilty.Collapsedはコントロールをレンダリングせずは空白を予約しません。コントロールが占有するスペースは「縮小」されているため、名前になります。

MSDNの正確なテキスト:

Collapsed:要素を表示せず、レイアウトに要素用のスペースを確保しません。

Hidden:要素を表示しませんが、レイアウト内の要素のためにスペースを確保します。

Visible:要素を表示します。

参照: http://msdn.Microsoft.com/en-us/library/system.windows.visibility.aspx

397
Razzie

表示:非表示と非表示

three Labelsのみを示し、2番目のLabelname__がvisibilityname__としてCollapsedname__である次のコードを検討してください。

 <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>

出力折りたたみ:

Collapsed

次に、2番目のLabelvisibilityname__をHidddenname__に変更します。

<Label Width="50" Content="Second" Visibility="Hidden"/>

出力非表示:

Hidden

それと同じくらい簡単。

49
Kylo Ren

少し古いスレッドですが、まだ違いを探している人のために:

Hiddenで取得され、Collapsedで取得されないレイアウト(スペース)以外に、別の違いがあります。

この「折りたたみ」メインコントロール内にカスタムコントロールがある場合、次回Visibleに設定すると、すべてのカスタムコントロールが「ロード」されます。ウィンドウの開始時にプリロードされません。

「非表示」については、「ウィンドウ」が開始されたときに非表示として設定したすべてのカスタムコントロールとメインコントロールを読み込みます。

7
scsfdev