2009-08-20 73 views
18

Tôi đang tạo một ứng dụng Windows (WPF) và C#. Theo quan điểm của tôi, tôi phải thêm vài bố cục như duyệt một thư mục, hiển thị các tệp trong thư mục trong chế độ xem danh sách ... vvCách tạo bảng điều khiển có thể thu gọn trong WPF

Yêu cầu của tôi là: Các bảng được đề cập ở trên phải là các bảng thu gọn, tôi đoán, chúng tôi không có tùy chọn của bảng điều khiển đóng mở trong wpf.

Tôi phải tạo điều khiển tùy chỉnh cho điều này? Nếu có, hãy đề nghị tôi làm thế nào để làm điều này?

+7

Vaccano, hình thức xấu. – Kilhoffer

+0

@Vaccano: câu trả lời đã được chấp nhận, bạn nên xóa bỏ phiếu giảm giá của mình ngay bây giờ –

Trả lời

53

Điều khiển Expander có thể là những gì bạn đang tìm kiếm. Từ MSDN:

Expander Lớp

Đại diện kiểm soát mà sẽ hiển thị một tiêu đề đó có một cửa sổ đóng mở để hiển thị nội dung.

+0

Cảm ơn bạn đã liên kết. Nhưng điều này không giống như một bảng điều khiển đóng mở trong ASP.NET. Thực ra tôi không sử dụng các điều khiển ASP.NET trong proj của tôi. Nhưng nếu tôi muốn loại điều khiển đó trong WPF, làm thế nào điều này có thể đạt được? Xin hãy giúp tôi Cảm ơn Ramm – Ramm

+1

Tôi không chắc chắn ý của bạn là gì - Expander * là * một điều khiển WPF và dường như hoạt động giống như một bảng điều khiển đóng mở. Bạn có thể giải thích chức năng nào bạn đang thiếu không? –

5

Có thể như thế này? đang

<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# đằng sau

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); 
    } 
} 

Bạn có thể sử dụng bất kỳ sự kiểm soát yếu tố như lưới, ngăn xếp, bến tàu, biên giới ...

+0

Làm thế nào về một ví dụ bằng cách sử dụng VisualStateManager? – avantprime

+0

Điều này thật tuyệt vời !! Đơn giản, hiệu quả .. Cảm ơn bạn! –

Các vấn đề liên quan