我正在创建一个包含 2 行网格的应用程序。它的顶行有一个数据网格,底行有一个描述区域。现在我有两个问题:
如果我没有专门设置DataGrid的高度,加载大约100多行需要更长的时间。如果行太多,则需要很长时间。如果我设置高度,它会立即加载任意数量的行并显示垂直滚动条。如何在不指定 height/maxheight 属性的情况下将 DataGrid 设置为适合第一行?
我想使用水平网格分割器,以便我可以调整每行的大小。但是,在 DataGrid 加载行后,它不起作用。它在加载行之前起作用。
以下是我的代码:
<ScrollViewer >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
<GridSplitter Panel.ZIndex="1"
ResizeDirection="Rows"
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
Grid.Row="1"
Grid.Column="1"
Height="2"
Background="#c0c0c0" />
<StackPanel Grid.Row="0">
<DataGrid
Margin="10"
Name="EventLogsDataGrid"
IsReadOnly="False"
SelectionChanged="EventLogsDataGrid_OnSelectionChanged"
AutoGenerateColumns="False"
CanUserSortColumns="False"
EnableColumnVirtualization="True"
EnableRowVirtualization="True"
ColumnWidth="*"
MaxHeight="500"
IsSynchronizedWithCurrentItem="True"
CanUserAddRows="False"
CanUserResizeRows="True"
VerticalAlignment="Stretch"
CanUserDeleteRows="False" />
</StackPanel>
<StackPanel Grid.Row="1">
<Label Content="Description" Margin="5 0 0 0"/>
</StackPanel>
</Grid>
</ScrollViewer>
我尝试将 DataGrid HorizontalAlignment 设置为 Stretch。我还尝试使用绑定将 DataGrid 的高度设置为父元素,但它不起作用。
StackPanel 会根据其子元素的需要而增长,这意味着您的 DataGrid 会扩展到最大高度。因此,只需删除 StackPanel 并将 DataGrid 添加为 Grid 的直接子级即可。同时删除其他 StackPanel,因为拥有它是没有意义的。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
<GridSplitter .../>
<DataGrid Grid.Row="0" .../>
<Label Grid.Row="1" .../>
</Grid>