2010-03-15 82 views
6

我使用的是最新的WPF Toolkit,但是當我在AccordionItem項目中有一個大的記錄集合綁定到DataGrid時,我遇到了高度問題。 Accordion本身的高度本身可以很好地縮放,但在手風琴控制器內的DataGrid沒有得到ScrollBar或以任何方式受到限制,因此記錄被隱藏。WPF DataGrid裏面的手風琴高度問題

我知道,我是最有可能失去了一些東西很簡單(如從DataGrid的身高屬性的手風琴具有約束力,但似乎凌亂)

這裏是代碼的削減版本(是的如果你在一個大的記錄綁定此有同樣的問題)

<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> 

回答

8

看起來像我最初的想法是對的 - 我已經能夠解決這一唯一的辦法就是到DataGridMaxHeight結合手風琴項目ActualHeight

添加以下屬性到每個DataGrid的伎倆

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

我很高興我無意中發現了這個!這個質量保證需要提高。除了列寬之外,我有類似的問題。

我DataGrid有寬度=「自動」,以及一些*大小的列寬。在Accordion之外,DataGrid渲染得很好,但在Accordion中,所有列的寬度都會變爲10px。無法弄清楚爲什麼。可能是一個錯誤?

我注意到,如果我設置一個像400而不是自動的靜態寬度,那麼這些列將正確呈現。然後,我嘗試將DataGrid Width綁定到AccordionItem ActualWidth,並且它現在可以很好地工作。謝謝你,先生!