Visibility.Collapsed和Visibility.Hidden之间的区别

时间:2009-05-20 08:10:04

标签: wpf wpf-controls visibility

WPF中Visibility.CollapsedVisibility.Hidden之间有什么区别?

3 个答案:

答案 0 :(得分:397)

不同之处在于Visibility.Hidden隐藏了控件,但保留了它在布局中占用的空间。因此它呈现空白而不是控件。 Visibilty.Collapsed不呈现控件不保留空格。控制所采取的空间是“崩溃”,因此就是名称。

来自MSDN的确切文字:

  

折叠:不显示元素,也不要在布局中为其预留空间。

     

隐藏:不显示元素,但为布局中的元素保留空间。

     

可见:显示元素。

请参阅:http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx

答案 1 :(得分:49)

可见性:隐藏的已折叠

请考虑以下代码,该代码仅显示 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>

输出已折叠:

Collapsed

现在将第二个Label visibility更改为Hiddden

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

输出隐藏:

Hidden

就这么简单。

答案 2 :(得分:7)

即使有点老线程,对于那些仍在寻找差异的人:

除了在隐藏中拍摄的布局(空格)并且没有在倒塌中拍摄时,还有另一个区别。

如果我们在“崩溃”中有自定义控件主控制,下次我们将其设置为Visible时,它将&#34; load&#34;所有自定义控件。窗口启动时不会预加载。

对于&#39;隐藏&#39;,它会加载所有自定义控件+主控件,当我们设置为&#34;窗口&#34;开始了。