1

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) 的边距设置为静态值。现在因为我将第一个TextBlock( NameBlock) 的工作包装设置为"Wrap",所以 的高度TextBlock是可变的。

有谁知道如何使上边距DescriptionBlock等于自动高度NameBlock这将确保第二个 DescriptionBlock 直接出现在 的下方NameBlock,而与 的文本长度无关NameBlock

非常感谢!布雷特

4

1 回答 1

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,您可以定义行使其自动调整大小。

于 2012-05-28T19:57:07.353 回答