WPF DataGrid внутри проблемы высоты аккордеона - PullRequest
6 голосов
/ 15 марта 2010

Я использую последний WPF Toolkit , но сталкиваюсь с проблемой высоты, когда у меня есть большой набор записей, связанный с DataGrid внутри элемента AccordionItem. Высота самого 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>

Ответы [ 2 ]

8 голосов
/ 16 марта 2010

Похоже, что моя первоначальная идея была правильной - единственный способ, которым я смог ее решить, - это связать MaxHeight из DataGrid с ActualHeight AccordionItem

Добавление следующего свойства к каждому DataGrid сделало трюк

MaxHeight="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type layouttoolkit:AccordionItem}},Path=ActualHeight}"
2 голосов
/ 06 мая 2010

Я так рад, что наткнулся на это! Этот QA должен быть одобрен. У меня была похожая проблема, за исключением ширины столбца.

Мой DataGrid имел Width = "Auto", а также некоторые * размеры столбца. За пределами Аккордеона DataGrid отображался нормально, но внутри Аккордеона ширина всех столбцов уменьшалась бы до 10 пикселей каждый. Не могу понять, почему. Может быть ошибка?

Я заметил, что если я установлю статическую ширину, например, 400, а не Авто, столбцы будут отображаться правильно. Затем я попытался связать DataGrid Width с AccordionItem ActualWidth, как вы сделали, и теперь он отлично работает. Спасибо, сэр!

...