动态TextBlocks

时间:2012-03-30 03:27:45

标签: c# xml windows-phone-7

我正在编写一个Windows手机应用程序,我想实现“点按文本以展开”功能。

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

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

[注意最后两项:TextWrapping="NoWrap" TextTrimming="WordEllipsis"并且缺少Height。[/ p>

这显示一行,当行长于屏幕时,它以省略号结束,这是完美的。目前,当用户点按TextBlock时,我将TextWrapping转为Wrap。这允许文本占用所需的行数(我想要的功能)。

问题在于,当我将TextWrapping转为Wrap时,它会扩展到它下方的TextBlock(请记住,我有一堆这些包装在一起)。另外,为了让它完全展开,我从来没有设置Height,所以如果我稍后尝试访问它,我会NaN(并且ActualHeight永远不会从26.6更改,无论有多少行它扩展为)

我正在寻找一种方法来动态地将TextBlocks下方的Margin降低到显示整个文本所需的数量,但我不知道“正确”的方法。 (在类似的说明中:硬编码RelativeLayout是不理想的,特别是对于动态扩展文本,是否有“{{1}}”(或类似的东西),我一直无法找到?)

1 个答案:

答案 0 :(得分:5)

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