WPF

2009-08-20 14 views
18

'da daraltılabilir bir panel nasıl oluşturulur Bir Windows uygulaması (WPF) ve C# oluşturuyorum. Benim görüşüme göre, bir klasöre göz atmak, klasördeki dosyaları bir liste görünümünde görüntülemek gibi birkaç düzen eklemem gerekiyor ... vb.WPF

Benim gereksinimim: Yukarıda bahsedilen paneller katlanabilir paneller olmalıydı, sanırım, wpf'de katlanabilir panel seçeneğimiz yok.

Bunun için özel bir denetim oluşturmalıyım? Eğer öyleyse, lütfen bunu nasıl yapacağımı öner.

+7

Vaccano, kötü formu. – Kilhoffer

+0

@Vaccano: cevabınız kabul edildi, şimdi indirilmemelidir –

cevap

53

Genişletici denetimi, aradığınız şey olabilir. MSDN Gönderen:

Genişletici Sınıf

içerik görüntüleyen katlanabilir penceresi var bir başlık görüntüler kontrolünü temsil eder.

+0

Bağlantı için teşekkürler. Ancak bu ASP.NET'te daraltılabilir bir panel gibi görünmüyor. Aslında projemde ASP.NET denetimlerini kullanmıyorum. Ama eğer WPF'de bu tür bir kontrol istiyorsam, bu nasıl olur? Pls bana yardım Teşekkürler Ramm – Ramm

+1

Ne demek istediğinizden emin değilim - Expander * bir WPF denetimi ve katlanabilir bir panel gibi davranıyor gibi görünüyor. Hangi işlevi kaybettiğinizi açıklayabilir misiniz? –

5

Bunu beğendiniz mi? Sen, ızgara gibi herhangi eleman denetimi kullanın yığını, rıhtım, sınır olabilir

private void StackPanel_MouseEnter(object sender, MouseEventArgs e) 
    { 
     Border sp = sender as Border; 
     DoubleAnimation db = new DoubleAnimation(); 
     //db.From = 12; 
     db.To = 150; 
     db.Duration = TimeSpan.FromSeconds(0.5); 
     db.AutoReverse = false; 
     db.RepeatBehavior = new RepeatBehavior(1); 
     sp.BeginAnimation(StackPanel.HeightProperty, db); 
    } 

    private void StackPanel_MouseLeave(object sender, MouseEventArgs e) 
    { 
     Border sp = sender as Border; 
     DoubleAnimation db = new DoubleAnimation(); 
     //db.From = 12; 
     db.To = 12; 
     db.Duration = TimeSpan.FromSeconds(0.5); 
     db.AutoReverse = false; 
     db.RepeatBehavior = new RepeatBehavior(1); 
     sp.BeginAnimation(StackPanel.HeightProperty, db); 
    } 
} 

arkasında

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto"/> 
     <RowDefinition Height="2*"/> 
    </Grid.RowDefinitions> 
    <Border Background="Red" Height="12" VerticalAlignment="Top" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave"></Border> 
</Grid>  

C# kodu ...

+0

VisualStateManager'ı kullanarak örnek nasıl? – avantprime

+0

Bu harika! Basit, etkili .. Teşekkürler! –