2013-12-16 11 views
6

Có ai quen thuộc với các trang web có thuộc tính tương tự như chế độ xem dạng cây không? Giống như phân đoạn tải xuống của trang web Microsoft. Bạn nhấn nút dấu cộng, nó sẽ mở rộng và mọi thứ bên dưới sẽ di chuyển xuống dưới. Bạn nhấn nút trừ và mọi thứ trong khối đó sụp đổ và nội dung bên dưới sẽ chuyển ngược trở lại.Cách mở rộng và thu gọn trong WPF như trong trang web

Cấp C# là không có gì giống như HTML và CSS nhưng tôi chỉ muốn biết nếu nó có thể làm như vậy trong một ứng dụng WPF.

Có vẻ như chế độ xem dạng cây hiện trong hộp công cụ chỉ cho phép văn bản được triển khai. Nó không cho phép các đối tượng bổ sung như nhãn hoặc hộp văn bản.

Tôi đã khám phá ra EXPANDER và nó làm tốt việc mở rộng và thu gọn nội dung của nó nhưng không hoàn toàn có khả năng kéo các đối tượng bên dưới nó lên hoặc đẩy chúng xuống. Đây là một ví dụ về kịch bản tôi muốn.

exibitA exibitB

Một ví dụ về những gì tôi sẽ cho sẽ là microsoft's download page nếu nó giúp. Cách nút mở rộng và thu gọn của chúng hoạt động.

Vì vậy, có cách nào để thực hiện việc này không?

+2

Một Expander là những gì tôi sẽ sử dụng, chính xác bạn muốn nói gì khi nói "không đủ khả năng kéo các đối tượng bên dưới nó lên hoặc đẩy chúng xuống"? –

+1

Bạn có thể hiển thị bất kỳ loại đối tượng nào bạn thích trong một TreeView WPF. Bài viết này rất tốt: http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode – Baldrick

+0

Tôi có nghĩa là nó rất tốt ẩn và hiển thị nội dung của nó là tốt nhưng Tôi không thể có được nó để đẩy văn bản đó là ra bên của nó lên hoặc xuống. – Offer

Trả lời

14

Dưới đây là ví dụ về cách sử dụng Expander làm cách trang tải xuống trên Microsoft sử dụng nó. Lưu ý rằng Height của RowDefinitions được đặt thành Auto, nếu không, Expander sẽ không thu gọn khi IsExpanded được đặt thành false.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Expander IsExpanded="True"> 
     <Border BorderBrush="Red" BorderThickness="2"> 
      <TextBlock Height="50" Text="Hello" /> 
     </Border> 
    </Expander> 
    <Expander Grid.Row="1" IsExpanded="True"> 
     <Border BorderBrush="Green" BorderThickness="2"> 
      <TextBlock Height="50" Text="World" /> 
     </Border> 
    </Expander> 
</Grid> 
1

chế độ xem thường xuyên của cây có thể làm những gì bạn yêu cầu.

thấy điều này tuyệt vời giải thích mã dự án:

http://www.codeproject.com/Articles/124644/Basic-Understanding-of-Tree-View-in-WPF

+1

Cảm ơn Nahum. Tôi có thể xác nhận bài viết hoạt động tốt. Mặc dù vậy, giải pháp của anh ấy có nghĩa là tôi không nhất thiết phải nhổ mã của tôi và gần như bắt đầu lại trên thiết kế nhưng tôi tích cực tôi sẽ sử dụng nó rất nhiều trước khi tôi hoàn thành dự án của mình. Cảm ơn một lần nữa. – Offer

0

WPF Expander phần làm chính xác những gì bạn muốn và nó đẩy xuống kiểm soát khác nếu lưu trữ trong một bảng điều khiển thích hợp. Hãy thử sử dụng ví dụ StackPanel.

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