В 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 не чувствует себя ограниченным...
Что делать?
Ответы
Ответ 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"
.