我正在编写一个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}}”(或类似的东西),我一直无法找到?)
答案 0 :(得分:5)
您是否尝试将TextBlock放置在StackPanel中?这样可以防止TextBlock对象重叠,您可以设置各自的边距值以确保所需的间距。