WPF DataGrid内置手风琴高度问题 [英] WPF DataGrid inside Accordion height issue

查看:174
本文介绍了WPF DataGrid内置手风琴高度问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用最新的 WPF工具包,但是当我有一个大的记录集绑定到 AccordionItem 项目中的 DataGrid 中。 手风琴本身的高度很好地缩放,但手风琴控件内的 DataGrid 则无法获得 ScrollBar 或以任何方式受到限制,以便记录被隐藏。



我知道我很可能会丢失一些非常简单的东西喜欢将 DataGrid 的height属性绑定到手风琴,但看起来很乱)



这里是一个剪辑代码的下降版本(是的,如果你绑定在一个大的记录集中,这也有同样的问题)

 < UserControl> 
< layouttoolkit:手风琴x:Name =ReportSelectorHorizo​​ntalAlignment =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:手风琴>
< / UserControl>


解决方案

看起来我的初始想法是正确的 - 唯一的方法我已经能够解决这个问题,是将 DataGrid MaxHeight 绑定到 AccordionItem的实际高度

将以下属性添加到每个 DataGrid 中, / p>

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


I am using the latest WPF Toolkit but am running into a height issue when I have a large record set bound into a DataGrid inside an AccordionItem item. The height of the Accordion itself scales nicely but the DataGrid inside the accordion control doesn't get get a ScrollBar or get constrained in any way so the records are hidden.

I know that I am most probably missing something very simple (like a binding from the DataGrid's height property to the Accordion but that seems messy)

here is a cut down version of the code (and yes, this has the same problem if you bind in a big recordset)

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

解决方案

Looks like my initial idea was right - the only way I have been able to solve this one is to bind the MaxHeight of the DataGrid to the ActualHeight of the AccordionItem

Adding the following property to each DataGrid did the trick

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

这篇关于WPF DataGrid内置手风琴高度问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆