TextBlock包装在网格(UWP)上

时间:2016-07-25 02:03:56

标签: wpf xaml 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

所以,最后一句话是&#34; Pass&#34;并且问你可以看到它继续前进。我只想让它在下面打破一条新线。我怎样才能做到这一点?我还尝试将Grid替换为StackPanel,但结果是一样的。

更新1 已将TextWrapping="Wrap"添加到我的TextBlock,可视化结果如下:

enter image description here

最后一个单词不再出现,甚至不在同一行。

1 个答案:

答案 0 :(得分:3)

TextWrapping="Wrap"添加到您的TextBlock

另外! 对于行的定义,这必须发生:

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