我正在开发一个WPF应用程序。因为我有Grid
有两行。一行包含datagrid
,另一行包含一些TextBlock
,以显示selected item
中DataGrid
的详细视图。
<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>
问题是,我在后面的代码中将Datagrid的ItemSource分配给IEnumerable集合。
Grid的行大小应该大小等于数据网格中的行数。
详细视图应占用剩余空间。
添加2行或更多行时。具有数据网格的行的高度应该扩展,因此它应该恰好适应2行,详细视图的大小应该相对减少。
如何在不将其编入8 *和2 *的情况下实现它。?
答案 0 :(得分:2)
对于datagrid行,将Height设置为Auto,将deatiled row set height设置为*,如下所示。
<RowDefinition Name="datagrid" Height="Auto"></RowDefinition>
<RowDefinition Name="detailedview" Height="*"></RowDefinition>
由于datagrid行高为Auto,因此将Datagrid的MinHeight属性设置为某个值,这样即使没有要显示的记录,datagrid也会占用更多的屏幕空间。下面我将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设置最小高度,以便在数据网格中有更多行时它不会完全收缩。
答案 1 :(得分:0)
您可以将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>