C# 动态文本块

C# 动态文本块,c#,xml,windows-phone-7,C#,Xml,Windows Phone 7,我正在编写一个windows phone应用程序,我想实现一个“点击文本展开”功能 我有一系列的TextBlocks,目前看起来很像这样重复了多次: <TextBlock Name="description" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,40,0,0" Width="444" TextWrapping="NoWrap" TextTrimming="WordEllips

我正在编写一个windows phone应用程序,我想实现一个“点击文本展开”功能

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

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

[注意最后两个:
TextWrapping=“NoWrap”
texttiming=“WordEllipsis”
和未设置高度。]

这显示一行,当该行比屏幕长时,它以省略号结束,这是完美的。当前,当用户点击
TextBlock
时,我将
TextWrapping
切换到
Wrap
。这允许文本根据需要使用任意多的行(我想要的功能)

问题是,当我将
TextWrapping
转换为
wrapp
时,它会扩展到它下面的
TextBlock
(请记住,我有一堆这样的东西被打包在一起)。另外,为了让它完全展开,我最初从未设置过高度,因此如果我以后尝试访问它,我会得到NaN(并且无论它展开多少行,实际高度都不会从26.6更改)


我正在寻找一种方法来动态地将它下面的
TextBlocks
向下推,以显示整个文本所需的量,但我不知道“正确”的方法。(类似的注意事项:硬编码
边距
是不可处理的,特别是对于动态扩展文本,是否有我找不到的“
相对长度”
”(或类似的东西?

您是否尝试过将文本块放在堆栈面板中?这将防止TextBlock对象重叠,您可以设置它们各自的边距值以确保所需的间距