我正在使用最新的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>
答案 0 :(得分:8)
看起来我最初的想法是正确的 - 我能够解决这个问题的唯一方法是将MaxHeight
的{{1}}绑定到AccordionItem的DataGrid
为每个ActualHeight
添加以下属性就可以了解
DataGrid
答案 1 :(得分:2)
我很高兴我偶然发现了这个!这个QA需要被投票。除了列宽以外,我遇到了类似的问题。
我的DataGrid有Width =“Auto”,以及一些*大小的列宽。在Accordion之外,DataGrid渲染得很好,但在Accordion中,所有列的宽度都会被压缩到10px。无法弄清楚原因。可能是个错误?
我注意到如果我将静态宽度设置为400而不是Auto,则列将正确呈现。然后我尝试将DataGrid Width绑定到AccordionItem ActualWidth,并且它现在可以正常工作。谢谢先生!