手风琴高度问题中的WPF DataGrid
Posted
技术标签:
【中文标题】手风琴高度问题中的WPF DataGrid【英文标题】:WPF DataGrid inside Accordion height issue 【发布时间】:2011-01-27 13:00:50 【问题描述】:我正在使用最新的WPF Toolkit,但是当我在AccordionItem
项目内绑定到DataGrid
的大型记录集时遇到了高度问题。 Accordion
本身的高度可以很好地缩放,但手风琴控件内的 DataGrid
没有得到 ScrollBar
或以任何方式受到限制,因此记录被隐藏。
我知道我很可能遗漏了一些非常简单的东西(比如从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>
【问题讨论】:
【参考方案1】:看起来我最初的想法是正确的 - 我能够解决这个问题的唯一方法是将 DataGrid
的 MaxHeight
绑定到 AccordionItem 的 ActualHeight
将以下属性添加到每个 DataGrid
就可以了
MaxHeight="Binding RelativeSource=RelativeSource FindAncestor, AncestorType=x:Type layouttoolkit:AccordionItem,Path=ActualHeight"
【讨论】:
【参考方案2】:我很高兴我偶然发现了这个!需要对此 QA 进行投票。除了列宽之外,我遇到了类似的问题。
我的 DataGrid 有 Width="Auto",以及一些 * 大小的列宽。在 Accordion 之外,DataGrid 渲染得很好,但在 Accordion 内部,所有列的宽度都会被压缩到每个 10 像素。想不通为什么。可能是错误?
我注意到,如果我将静态宽度设置为 400 而不是 Auto,则列将正确呈现。然后我尝试像你一样将 DataGrid Width 绑定到 AccordionItem ActualWidth,现在它工作得很好。谢谢楼主!
【讨论】:
以上是关于手风琴高度问题中的WPF DataGrid的主要内容,如果未能解决你的问题,请参考以下文章