UserControl
, с которым я пытаюсь работать, по сути выложено так:
<Grid>
<Grid.RowDefinitions>
<Row Height="*"/>
<Row Height="*"/>
</Grid.RowDefinitions>
<wpftoolkit:DataGrid x:Name="PrimaryGrid"/> <!-- ~10 rows -->
<Border>
<Grid>
<Grid.RowDefinitions>
<Row Height="*"/>
<Row Height="*"/>
</Grid.RowDefinitions>
<wpftoolkit:DataGrid x:Name="SecondaryGrid"/> <!-- ~2 rows -->
<wpftoolkit:DataGrid x:Name="OtherGrid"/> <!-- ~50 rows -->
</Grid>
</Border>
</Grid>
Этот UserControl
затем помещается в мой Window
как последний член Grid
, единственный с Height="*"
. У меня проблемы с размером DataGrid
s.
Если я установлю VerticalAlignment
из UserControl
в Stretch
в Window
, тогда PrimaryGrid
получит половину высоты UserControl
, и каждый из двух в Border
получит 1/4. Они имеют одинаковый размер независимо от количества строк в каждой, оставляя OtherGrid
со слишком маленьким вертикальным пространством, а другие - с пустым пробелом внутри прокрутки.
Если я установлю VerticalAlignment
на Top
, сетки, похоже, будут достаточно хорошо соответствовать их содержимому, за исключением того, что в нижней части UserControl
остается необъяснимое пустое пространство. Я использовал Snoop и RowDefinition
для UserControl
имеет правильное ActualHeight
, но UserControl
использует только его часть - 80% или около того.
Я не против того, чтобы исправить случай Stretch
(Как сделать так, чтобы DataGrid
не растягивался больше, чем количество строк?) Или случай Top
(Как сделать UserControl
использовать все доступное ему пространство?)