2

我有一个简单的两行网格,第一行具有固定高度。在里面,我有一个 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

4 回答 4

0

In this case you must use VerticalAlignment to stretch in order to fill your RowDefinition's Height.

<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>  

On this way you will see your TextBox stretched to the Row height.

于 2015-01-22T11:11:00.197 回答
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覆盖 aRowDefinitionHeight="*"解决方案。

于 2015-01-22T10:30:50.170 回答
0

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

于 2015-01-22T11:00:25.180 回答
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>
于 2015-01-22T11:08:08.890 回答