2010-03-15 6 views
6

Tôi đang sử dụng WPF Toolkit mới nhất nhưng đang chạy vào vấn đề độ cao khi tôi có một bản ghi lớn được đặt vào một DataGrid bên trong một mục AccordionItem. Chiều cao của Accordion chính nó quy mô độc đáo nhưng các DataGrid bên trong kiểm soát accordion không nhận được một ScrollBar hoặc bị hạn chế trong bất kỳ cách nào để các hồ sơ được ẩn.WPF DataGrid bên trong vấn đề chiều cao Accordion

Tôi biết rằng tôi có lẽ hầu hết thiếu một cái gì đó rất đơn giản (như một ràng buộc từ sở hữu chiều cao 's DataGrid đến Accordion nhưng điều đó dường lộn xộn)

đây là một phiên bản cắt giảm của mã (và vâng , điều này có cùng một vấn đề nếu bạn ràng buộc trong một recordset lớn)

<UserControl> 
<layouttoolkit:Accordion x:Name="ReportSelector" HorizontalAlignment="Stretch"> 
    <layouttoolkit:AccordionItem Header="grid 1"> 
     <dg:DataGrid 
     AutoGenerateColumns="False" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     SelectionMode="Single"> 
... 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 

    </layouttoolkit:AccordionItem> 
    <layouttoolkit:AccordionItem Header="grid 2"> 
     <dg:DataGrid 
     AutoGenerateColumns="False" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     SelectionMode="Single"> 
... 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 

    </layouttoolkit:AccordionItem> 
    <layouttoolkit:AccordionItem Header="grid 3"> 
     <dg:DataGrid 
     AutoGenerateColumns="False" 
     CanUserAddRows="False" 
     CanUserDeleteRows="False" 
     SelectionMode="Single"> 
... 
      </dg:DataGrid.Columns> 
     </dg:DataGrid> 

    </layouttoolkit:AccordionItem>    
</layouttoolkit:Accordion> 
</UserControl> 

Trả lời

8

Hình như ý tưởng ban đầu của tôi đã đúng - cách duy nhất tôi đã có thể giải quyết này là để ràng buộc MaxHeight của DataGrid đến ActualHeight của AccordionItem

Thêm thuộc tính sau đây để mỗi DataGrid đã làm các trick

MaxHeight="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type layouttoolkit:AccordionItem}},Path=ActualHeight}" 
2

Tôi rất vui vì tôi vấp về vấn đề này! Điều này QA cần phải được upvoted. Tôi đã có một vấn đề tương tự, ngoại trừ với chiều rộng cột.

DataGrid của tôi có Chiều rộng = "Tự động", cùng với một số chiều rộng cột * được tối ưu hóa. Bên ngoài Accordion DataGrid được hiển thị tốt nhưng bên trong Accordion, chiều rộng của tất cả các cột sẽ bị thu hẹp đến 10px mỗi cột. Không thể hiểu tại sao. Có thể là một lỗi?

Tôi nhận thấy rằng nếu tôi đặt Độ rộng tĩnh như 400 thay vì Tự động, các cột sẽ hiển thị chính xác. Sau đó, tôi đã cố gắng ràng buộc chiều rộng DataGrid cho AccordionItem ActualWidth như bạn đã làm, và nó hoạt động hoàn hảo ngay bây giờ. Cảm ơn ngài!