Görünürlük arasındaki fark. Çakışan ve Görünürlük.


287

WPF arasındaki Visibility.Collapsedve Visibility.Hiddenarasındaki farklar nelerdir ?


4
Gizli ve Daraltılmış arasında bir Performans farklılığı var mı? Nesnenin daraltıldığı bir örnek var mı?
Bulli

@Bulli Evet bir performans farkı var, görünmez bir kontrol yine de yerleşim kartına tabi olacak, oysa daraltılmış bir kontrol düzenlenmeyecek. Örneğin, büyük bir ızgara Görünürlüğü Görünmez olduğunda performansı olumsuz etkileyebilir.
Marius Herzog

Yanıtlar:


426

Fark, Visibility.Hiddenkontrolü gizlemesidir, ancak düzende kapladığı alanı ayırır. Böylece kontrol yerine boşluk oluşturur. Visibilty.Collapsedkontrolünü kılmaz ve boşluk ayırmaz. Kontrolün alacağı alan 'daraltılmış', dolayısıyla isim.

MSDN'den tam metin:

Daraltılmış : Öğeyi görüntülemeyin ve mizanpajda yer ayırmayın.

Gizli : Öğeyi görüntüleme, ancak mizanpajdaki öğeye yer ayırma.

Görünür : Öğeyi görüntüler.

Bkz. Http://msdn.microsoft.com/tr-tr/library/system.windows.visibility.aspx


2
Bu, kontrolün genişliği ve yüksekliğinin daraltılmışsa sıfıra ayarlanacağı anlamına gelir.
Sauron

27
Peki, düzen açısından, evet. Elbette genişliği ve yüksekliği sıfıra ayarlamaktan daha fazlasını yapar. Görünürlük daraltıldığında, denetimin odağı olamaz, SEKME tuşunu, vb. Kullanarak denetime gidemezsiniz; bunların tümü, yüksekliği ve genişliği sıfır olursa yine de yapabilir. Ama yine, düzen açısından şunu söyleyebilirsiniz.
Razzie

3
WebBrowser denetimi ile Gizli (ve sonra Görünür) kullanarak bana çok tutarsız sonuçlar verdiğini buldum. Daraltılmış (daha sonra Görünür) kullanımı daha iyi çalışıyor gibi görünüyor.
Üçlü

daraltılmış bir kontrol hala "aktif" tir. Bir web tarayıcısı kontrolü kullanıyorum, ancak bunu göstermek istemiyorum, ancak farklı sayfalarda gezinmek ve bir şeyler yapmak için ihtiyacım var
yazılım eğlencelidir

Chrome'da boşlukların kaybolmasını sağlamak için <div style = "display: none"> kullanmamız gerekiyordu. "Daraltılmış" bir görünürlük seçeneği değildir. "Daralt" bir değerdir, ancak alan hala oradaydı.
Praxiteles

55

Görünürlük: Gizli ve Daraltılmış

Kod sadece gösterileri izleyen düşünün three Labelsve ikinci sahiptir Label visibilityolarak 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>

Çıktı Daraltı:

çökmüş

Şimdi ikincisini Label visibilityolarak değiştirin Hiddden.

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

Çıktı Gizli:

Gizli

Kadar basit.


9

Biraz eski iplik olmasına rağmen, hala farklılıkları arayanlar için:

Gizli'de alınan ve Daraltılmış'ta alınmayan düzen (boşluk) dışında bir fark daha var.

Bu 'Daraltılmış' ana kontrolün içinde özel kontrollerimiz varsa, bunu bir sonraki Görünür olarak ayarladığımızda, tüm özel kontrolleri "yükleyecektir". Pencere başlatıldığında önceden yüklenmez.

'Gizli' ise, "pencere" başlatıldığında gizli olarak ayarladığımız tüm özel kontrolleri + ana kontrolü yükleyecektir.


2
Bunun yanlış olduğuna eminim. Geçerli Uygulamam, tüm Denetimlerimi daraltılmış olarak ayarlasam bile her şeyi yüklüyor gibi görünüyor.
Tim Pohlmann

1
Çöken'den gelen bir sorunla karşı karşıyayım. Daraltılmış kullanıldığında, örneğin Etkileşim, Görünürlük Görünür olarak değiştirilinceye kadar davranışlar yüklenmez. Bu nedenle,
VM'den
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.