0

我正在开发一个 WPF 应用程序。在那我有一个Grid有两行的。一行由 组成,datagrid另一行有一些显示inTextBlock的详细视图。selected itemDataGrid

<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 集合。

网格的行大小应该与数据网格中的行数完全相等。

剩余空间应由详细视图占用。

添加 2 行或更多行时。具有数据网格的行的高度应该扩展,因此它应该恰好容纳 2 行,并且详细视图的大小应该相对减小。

如何在不将其编码为 8* 和 2* 的情况下实现它?

4

2 回答 2

2

对于 datagrid 行,将 Height 设置为 Auto,对于 deatiled 行,将 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 设置一个最小高度,以便在数据网格中有更多行时它不会完全收缩。

于 2013-01-24T10:30:56.013 回答
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>
于 2013-01-24T11:51:22.763 回答