具有不同行大小的Xam网格取决于数据

时间:2011-08-26 00:33:48

标签: xaml grid

我希望用XAML做一些事情,以便网格中的行高是可变的。但我不确定是否有可能。

我在网格中有两行,如果有数据要填充每一行,那么没有问题。但是,如果没有数据填充第二行,那么我希望第一行中的数据实际上是使用两行进行居中。

我可以通过使用Rowspan属性来实现这一点,但是根据行的数据是否存在,我可以使其动态化吗?

如果没有,我还有其他方法可以达到这个目的吗?

更新后的代码如下。

<StackPanel Grid.Row="0" Grid.Column="4" Grid.RowSpan="2">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="40"/>
                        <RowDefinition Height="25"/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{Binding Details}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextNormalStyle}" 
                       Grid.Row="0"  Grid.Column="0" Grid.RowSpan="{Binding DetailRowSpan}"  FontSize="{StaticResource PhoneFontSizeMediumLarge}" VerticalAlignment="Center" />

                    <TextBlock Text="{Binding Location}" Style="{StaticResource PhoneTextSmallStyle}"
                       Grid.Row="1" Grid.Column="0"/>

                </Grid>

            </StackPanel>
  • 感谢

1 个答案:

答案 0 :(得分:0)

将第一行的Height属性设置为*,将第二行的height属性设置为Auto:

<Grid.RowDefinitions>
    <RowDefinition Height="*" />
    <RowDefinition Height="Auto" />
</Grid.RowDefinitions>

如果没有任何内容,这将使第二行的高度为0。第一行将占用任何可用空间。

编辑:在重新阅读你的问题并阅读评论后,我认为你实际要问的是如何动态地使单个单元格跨越多行(或不是),具体取决于下一个网格是否具有该内容的内容柱。如果是这种情况,那么我建议在类中绑定到高度可能不同的单元格中创建只读整数属性。该属性应通过检查相邻行来计算单元格应覆盖的行数。然后它可以绑定到网格的RowSpan属性。