我正在编写一个 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 对象重叠,并且您可以设置它们各自的边距值以确保所需的间距。
关于c# - 动态文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936625/