Windows Phone SDK - XAML - 上边距的自动保证金

时间:2012-05-28 19:07:37

标签: c# windows windows-phone-7 xaml

我在XAML中有以下my Windows Phone app

<StackPanel Orientation="Horizontal">
  <Grid x:Name="LayoutRoot">
    <Image Source="{Binding ImageUrl}" Height="80" HorizontalAlignment="Left" Margin="10,10,0,0" Stretch="Fill" VerticalAlignment="Top" Width="93" />
    <TextBlock name="NameBlock" Text="{Binding Name}" FontSize="30" Margin="150,20,0,0" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Width="300" />
    <TextBlock name="DescriptionBlock" Text="{Binding Description}" FontSize="25" Margin="150,150,0,0" TextWrapping="Wrap" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="300" />
  </Grid>
</StackPanel>

目前,我将第二个TextBlock(DescriptionBlock)的边距设置为静态值。现在因为我将第一个TextBlockNameBlock)的工作包装设置为"Wrap"TextBlock的高度是可变的。

是否有人知道如何使DescriptionBlock的上边距等于NameBlock的自动高度?这将确保第二个DescriptionBlock直接显示在NameBlock下方{1}},无论NameBlock的文字长度如何。

非常感谢! 布雷特

1 个答案:

答案 0 :(得分:1)

这就是面板的用途。将两个文本块包装在堆栈面板中,它将文本块一个堆叠在另一个上面。

    <Grid x:Name="LayoutRoot">
        <Image Source="{Binding ImageUrl}" Height="80" HorizontalAlignment="Left" Margin="10,10,0,0" Stretch="Fill" VerticalAlignment="Top" Width="93" />
        <StackPanel Margin="150,20,0,0" Width="300">
            <TextBlock name="NameBlock" Text="{Binding Name}" FontSize="30"  TextWrapping="Wrap" HorizontalAlignment="Left" />
            <TextBlock name="DescriptionBlock" Text="{Binding Description}" FontSize="25" TextWrapping="Wrap" HorizontalAlignment="Left" />
        </StackPanel>
    </Grid>

包含单个孩子的面板通常没用,所以我删除了网格周围的堆栈面板。

如果您想继续使用Grid,可以自动定义行数。