动态文本块

本文关键字:文本 动态 | 更新日期: 2023-09-27 18:29:39

我正在编写一个Windows Phone应用程序,我想实现"点击文本展开"功能。

我有一系列TextBlocks,目前看起来很像这样重复多次:

<TextBlock 
    Name="description" HorizontalAlignment="Left" VerticalAlignment="Top" 
    Margin="12,40,0,0" Width="444"
    TextWrapping="NoWrap" TextTrimming="WordEllipsis" />

[注意最后两个:TextWrapping="NoWrap" TextTrimming="WordEllipsis"和缺乏Height设置。

这显示了一行,当线条比屏幕长时,它以省略号结束,这是完美的。目前,当用户点击TextBlock时,我TextWrapping转到Wrap。这允许文本根据需要占用任意数量的行数(我想要的功能(。

问题是,当我TextWrapping转到Wrap时,它会扩展到它下面的TextBlock(记住,我有一堆彼此相邻的(。此外,为了让它完全扩展,我最初从未设置Height,所以如果我稍后尝试访问它,我会得到NaN(并且ActualHeight永远不会从 26.6 更改,无论它扩展多少行(

我正在寻找一种方法来动态地将下面的TextBlocks向下推到完整显示文本所需的量,但我不知道"正确"的方法。(同样说明:硬编码Margin是不理想的,特别是对于动态扩展的文本,是否有我无法找到的"RelativeLayout"(或类似的东西(?

动态文本块

您是否尝试过将 TextBlock 放置在 StackPanel 中? 这应该可以防止 TextBlock 对象重叠,您可以设置它们各自的边距值以确保所需的间距。