Подтвердить что ты не робот

В wpf, как сделать datagrid соответствовать высоте окна

У меня есть сетка с тремя столбцами и двумя строками

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="10"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

I нижняя левая ячейка, у меня есть сетка данных, с AutoGenerateColumns = True, которая может загружать многие строки. Я хочу, чтобы высота сетки данных максимально увеличивалась, чтобы соответствовать окну, и чтобы пользователь мог использовать панель прокрутки datagrid для прокрутки строк вверх и вниз.

Что происходит, так это то, что потоки данных в нижней части окна, и даже если я установил

ScrollViewer.VerticalScrollBarVisibility="Visible"

в datagrid, полоса прокрутки не действует, а строки стекают вниз. Каким-то образом datagrid не чувствует себя ограниченным...

Что делать?

4b9b3361

Ответ 1

Попробуйте установить DataGrid HorizontalAlignment=Stretch и VerticalScrollBarVisibility=Auto

Если это не сработает, вам также может потребоваться привязать высоту сетки к высоте окна, чтобы она не увеличивалась, чтобы соответствовать ее содержимому. Обычно я использую Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ActualHeight}" (это может быть RenderSize.ActualHeight insetad только ActualHeight... Я забыл.

Другой альтернативой является использование DockPanel вместо Grid, поскольку этот элемент управления не автоматически растет, чтобы соответствовать его содержимому. Вместо этого он растянет последний ребенок, чтобы заполнить все оставшееся пространство.

Ответ 2

Вы должны определить столбец и строку, где DataGrid имеет значение *. Вы говорите, что это находится в нижней левой клетке. Строка в порядке, но в вашей колонке есть Width="Auto".

AutoGenerateColumns=True дает беспорядок, если Width="Auto".