2016-07-25 68 views
0

一直在一点上的这项研究,但一直没能解决这个问题:TextBlock的包装(UWP)

我有一个GridView,这里是它的所有代码:

<GridView Name="NewsGrid" IsItemClickEnabled="True" ItemClick="NewsGrid_ItemClick"> 
    <GridView.ItemTemplate> 
      <DataTemplate x:DataType="data:News"> 
       <Grid Height="Auto" Margin="0" Width="440"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"/> 
         <RowDefinition Height="*"/> 
        </Grid.RowDefinitions> 
        <Image Source="{x:Bind Image}" 
         HorizontalAlignment="Center" 
         Stretch="UniformToFill" 
         Margin="5" 
         Height="247" 
         Width="440"/> 
        <TextBlock Text="{x:Bind Body}" 
          Foreground="SteelBlue" 
          Grid.Row="1" 
          Height="Auto" 
          HorizontalAlignment="Stretch" 
          Width="440" 
          Margin="5 0 5 0"/> 
       </Grid> 
      </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

我想要完成的是TextBlock如果文本的长度超过440像素,就会打包。上面的代码没有完成。给你一些视觉效果,这里是从上面的代码的结果:

enter image description here

所以这最后一句话是“通行证”,并要求你可以看到它只是不断去。我只是想让它在下面闯入一条新线。我怎样才能做到这一点?我也尝试将我的Grid换成StackPanel,但结果是一样的。

更新1 新增TextWrapping="Wrap"TextBlock,视觉效果是这样的:

enter image description here

最后一个字显示不出来了,甚至没有在同一条线上。

回答

3

TextWrapping="Wrap"添加到您的TextBlock

另外! 对于这种情况必须发生的行的定义:

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

谢谢!我试过了,请参阅问题编辑。 – CStruggle

+0

你可以看到“通行证”不再显示在线上,这意味着包裹工作。问题是你的TextBlock没有足够的垂直空间。 – AlexDrenea

+0

对,但不'Height =“自动”解决?父母“网格”是问题吗?因为我的父'Grid'也有'Height =“Auto”'。 – CStruggle

相关问题