Grid RowDefinintion修复高度忽略

时间:2015-01-22 10:10:41

标签: wpf grid-layout rowdefinition

我有一个有两行的简单网格,第一行有一个固定的高度。在里面,我有一个带有RowSpan =" 2"的元素,另一个元素应该只存在于第一行:

        <Grid Background="Lime">
            <Grid.RowDefinitions>
                <RowDefinition Height="20"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>

            <Rectangle Grid.RowSpan="2" Height="50" Fill="Blue"/>

            <TextBlock Grid.Row="0" Text="Foo" VerticalAlignment="Center" Background="Red"/>
        </Grid>

然而,第一行的实际高度只是忽略了高度设置,远远超出预期。

这是网格中的错误吗?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

<Grid Background="Lime">
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Rectangle Grid.RowSpan="2" Height="50" VerticalAlignment="Center" Fill="Blue"/>
    <TextBlock Grid.Row="0" Text="Foo" VerticalAlignment="Center" Background="Red"/>
</Grid>

我不确定RowSpan是否会RowDefinition覆盖Height="*"。{/ p>

答案 1 :(得分:0)

我也尝试了几次,但它不会起作用。我认为这是设计上的。你不能把矩形作为网格的父级放在xaml中吗?

答案 2 :(得分:0)

它似乎不是这样工作的 相反,我只是使用VerticalAlignment属性将TextBlock移到顶部,并完全删除了RowDefinitions:

        <Grid Background="Lime">
            <Rectangle Height="50" Fill="Blue"/>
            <TextBlock Grid.Row="0" Text="Foo" VerticalAlignment="Top" Background="Red" Height="20"/>
        </Grid>

答案 3 :(得分:0)

在这种情况下,您必须使用VerticalAlignment进行拉伸才能填充RowDefinition的高度。

<Grid Background="Lime">
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Rectangle Grid.RowSpan="2" Height="50" Fill="Blue"/>

    <TextBlock Name="texto" Grid.Row="0" Text="Foo" VerticalAlignment="Stretch" Background="Red"/>
</Grid>  

通过这种方式,您将看到TextBox延伸到行高。