Apa perbedaan antara Visibility.Collapseddan Visibility.Hiddendalam WPF?
Apa perbedaan antara Visibility.Collapseddan Visibility.Hiddendalam WPF?
Jawaban:
Perbedaannya adalah bahwa Visibility.Hiddenmenyembunyikan kontrol, tetapi cadangan ruang yang ditempati dalam tata letak. Jadi itu membuat spasi bukan kontrol.
Visibilty.Collapsedtidak 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 Labelsdan memiliki yang kedua Label visibilitysebagai 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 visibilitymenjadi 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.