[wpf] Visibility.Collapsed와 Visibility.Hidden의 차이점

WPF Visibility.Collapsed와 차이점은 무엇입니까 Visibility.Hidden?



답변

차이점은 Visibility.Hidden컨트롤 을 숨기지 만 레이아웃에서 차지하는 공간을 확보한다는 것입니다. 따라서 컨트롤 대신 공백을 렌더링합니다.
Visibilty.Collapsed컨트롤을 렌더링하지 않습니다 공백을 예약하지 않습니다. 컨트롤이 차지하는 공간은 ‘축소’되므로 이름입니다.

MSDN의 정확한 텍스트 :

접음 : 요소를 표시하지 않고 레이아웃에 공간을 예약하지 않습니다.

숨김 : 요소를 표시하지 않지만 레이아웃에서 요소를위한 공간을 확보하십시오.

표시 : 요소를 표시합니다.

참조 : http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx


답변

가시성 : 숨겨진 대 축소

코드 만 보여줍니다 다음 고려 three Labels와 두 번째가 Label visibilityCollapsed:

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

출력 축소 :

접힌

이제 두 번째 Label visibility를로 변경하십시오 Hiddden.

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

숨겨진 출력 :

숨겨진

저것과 같이 쉬운.


답변

조금 오래된 스레드이지만 여전히 차이점을 찾는 사람들을 위해 :

숨김에서 가져온 레이아웃 (공간)을 제외하고는 축소 된 경우에는 다른 차이점이 있습니다.

이 ‘Collapsed’기본 컨트롤 내에 사용자 지정 컨트롤이있는 경우 다음에이 컨트롤을 Visible로 설정하면 모든 사용자 지정 컨트롤이 “로드”됩니다. 윈도우가 시작될 때 사전로드되지 않습니다.

‘숨겨 짐’은 “창”이 시작될 때 숨겨진 것으로 설정 한 모든 사용자 지정 컨트롤 + 기본 컨트롤을로드합니다.


답변