首页 > 解决方案 > WPF控件拉伸问题

问题描述

我有一个DataGridGrid一个TabItem

<TabItem Header="SomeHeader">
    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Grid.RowDefinitions>
            <RowDefinition SharedSizeGroup="TabHeight" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="TabWidth"/>
        </Grid.ColumnDefinitions>
        <DataGrid Margin="10" Grid.Column="0" Grid.Row="0"
                  HorizontalAlignment="Stretch"
                  VerticalContentAlignment="Stretch"
                  IsReadOnly="True" 
                  AutoGenerateColumns="False">
        </DataGrid>
    </Grid>
</TabItem>

问题是DataGrid拒绝对包含的Grid. 是什么阻止它这样做?

标签: wpf

解决方案


Grid与共享大小组共享其行和列大小,TabWidth并且TabHeight. 因此,包含 的行和列的大小在共享相同组并位于相同网格大小范围内的DataGrid所有 s 中确定,如下所示:Grid

  • 绝对值优先于Auto,因此组中最大的显式列大小获胜,即使所有其他列都定义为Auto
  • 如果所有行/列都是Auto-size,则最大的获胜
  • 星号 ( *) 被视为Auto(列的默认宽度为1*,因此该规则也适用)

澄清一下, 的DataGrid大小是为了适应它在 中分配的行和列Grid,而不是Grid自身的大小。如果要将其调整为包含选项卡的大小,则Grid是多余的。将共享大小应用于行或列并将其调整大小以填充其父级是相反的目标,请选择一个。


推荐阅读