WPF DataGrid里面的Accordion高度问题

时间:2010-03-15 03:08:58

标签: wpf xaml datagrid height wpftoolkit

我正在使用最新的WPF Toolkit,但是当我将一个大型记录集绑定到DataGrid项内的AccordionItem时,我遇到了高度问题。 Accordion本身的高度可以很好地缩放,但是手风琴控件中的DataGrid不会得到ScrollBar或以任何方式受约束,因此隐藏记录。

我知道我很可能错过了一些非常简单的东西(比如从DataGrid的高度属性到Accordion的绑定但是看起来很乱)

这是代码的缩减版本(是的,如果你绑定一个大的记录集,这会有同样的问题)

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

2 个答案:

答案 0 :(得分:8)

看起来我最初的想法是正确的 - 我能够解决这个问题的唯一方法是将MaxHeight的{​​{1}}绑定到AccordionItem的DataGrid

为每个ActualHeight添加以下属性就可以了解

DataGrid

答案 1 :(得分:2)

我很高兴我偶然发现了这个!这个QA需要被投票。除了列宽以外,我遇到了类似的问题。

我的DataGrid有Width =“Auto”,以及一些*大小的列宽。在Accordion之外,DataGrid渲染得很好,但在Accordion中,所有列的宽度都会被压缩到10px。无法弄清楚原因。可能是个错误?

我注意到如果我将静态宽度设置为400而不是Auto,则列将正确呈现。然后我尝试将DataGrid Width绑定到AccordionItem ActualWidth,并且它现在可以正常工作。谢谢先生!