Apa perbedaan antara Visibility.Collapsed
dan Visibility.Hidden
dalam WPF?
Apa perbedaan antara Visibility.Collapsed
dan Visibility.Hidden
dalam WPF?
Jawaban:
Perbedaannya adalah bahwa Visibility.Hidden
menyembunyikan kontrol, tetapi cadangan ruang yang ditempati dalam tata letak. Jadi itu membuat spasi bukan kontrol.
Visibilty.Collapsed
tidak membuat kontrol dan tidak memesan spasi putih. Ruang kontrol akan mengambil 'runtuh', maka namanya.
Teks persis dari MSDN:
Runtuh : Jangan tampilkan elemen, dan jangan menyimpan ruang untuk itu dalam tata letak.
Tersembunyi : Jangan tampilkan elemen, tetapi simpan ruang untuk elemen dalam tata letak.
Terlihat : Tampilkan elemen.
Lihat: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx
Visibilitas: Tersembunyi Vs Runtuh
Pertimbangkan kode berikut yang hanya menunjukkan three Labels
dan memiliki yang kedua Label
visibility
sebagai 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>
Output Runtuh:
Sekarang ubah yang kedua Label
visibility
menjadi Hiddden
.
<Label Width="50" Content="Second" Visibility="Hidden"/>
Output Tersembunyi:
Sesimpel itu.
Meski utas agak lama, bagi yang masih mencari perbedaan:
Selain dari tata letak (spasi) yang diambil dalam Tersembunyi dan tidak diambil dalam Runtuh, ada perbedaan lain.
Jika kami memiliki kontrol khusus di dalam kontrol utama 'Hancur' ini, saat berikutnya kami atur ke Visible, itu akan "memuat" semua kontrol khusus. Ini tidak akan dimuat sebelumnya ketika jendela dimulai.
Adapun 'Tersembunyi', itu akan memuat semua kontrol khusus + kontrol utama yang kami tetapkan sebagai tersembunyi ketika "jendela" dimulai.