WPF中Visibility.Collapsed
和Visibility.Hidden
之间有什么区别?
答案 0 :(得分:397)
不同之处在于Visibility.Hidden
隐藏了控件,但保留了它在布局中占用的空间。因此它呈现空白而不是控件。
Visibilty.Collapsed
不呈现控件,不保留空格。控制所采取的空间是“崩溃”,因此就是名称。
来自MSDN的确切文字:
折叠:不显示元素,也不要在布局中为其预留空间。
隐藏:不显示元素,但为布局中的元素保留空间。
可见:显示元素。
请参阅:http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
答案 1 :(得分:49)
可见性:隐藏的已折叠
请考虑以下代码,该代码仅显示 three Labels
,并且第二个Label
visibility
为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>
输出已折叠:
现在将第二个Label
visibility
更改为Hiddden
。
<Label Width="50" Content="Second" Visibility="Hidden"/>
输出隐藏:
就这么简单。
答案 2 :(得分:7)
即使有点老线程,对于那些仍在寻找差异的人:
除了在隐藏中拍摄的布局(空格)并且没有在倒塌中拍摄时,还有另一个区别。
如果我们在“崩溃”中有自定义控件主控制,下次我们将其设置为Visible时,它将&#34; load&#34;所有自定义控件。窗口启动时不会预加载。
对于&#39;隐藏&#39;,它会加载所有自定义控件+主控件,当我们设置为&#34;窗口&#34;开始了。