相对增加和减少网格的行高
本文关键字:网格 增加 相对 | 更新日期: 2023-09-27 17:56:02
我正在开发一个WPF应用程序。在那我有一个有两行的Grid
。一行由datagrid
组成,另一行有一些TextBlock
来显示DataGrid
中selected item
的详细视图。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Name="datagrid" Height="8*"></RowDefinition>
<RowDefinition Name="detailedview" Height="2*"></RowDefinition>
</Grid.RowDefinitions>
<my:DataGrid
Grid.Row="0"
x:Name="dataGrid1"
Width="auto"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AutoGenerateColumns="False" CanUserAddRows="True" Margin="0,0,0,0">
<Grid Grid.Row="2">
<!- Detailed View->
</Grid>
</Grid>
问题是,我正在将数据网格的 ItemSource 分配给我的代码隐藏中的 IEnumerable 集合。
网格的行大小应与数据网格中的行数完全等于。
剩余空间应由详细视图占用。
添加 2 行或更多行时,具有 DataGrid 的行的高度应扩展,因此它应恰好容纳 2 行,并且详细视图的大小应相对减小。
如何在不将其编码为 8* 和 2* 的情况下实现它。
对于数据网格行,将"高度"设置为"自动",对于"分隔"行,将"高度"设置为 *,如下所示。
<RowDefinition Name="datagrid" Height="Auto"></RowDefinition>
<RowDefinition Name="detailedview" Height="*"></RowDefinition>
由于数据网格行高为"自动",因此请将数据网格的 MinHeight 属性设置为某个值,以便即使没有要显示的记录,数据网格也会占用更多的屏幕空间。下面我将最小高度设置为 80。
<my:DataGrid
MinHeight="80"
Grid.Row="0"
x:Name="dataGrid1"
Width="auto"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AutoGenerateColumns="False" CanUserAddRows="True" Margin="0,0,0,0">
您可能还希望为 TextBlock 设置最小高度,以便在数据网格中有更多行时它不会完全收缩。
您可以将 DataGrid 放入 ScrollViewer。尝试下一个标记:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="0">
<my:DataGrid ... />
</ScrollViewer>
<TextBlock Height="40" Grid.Row="1" />
</Grid>