【问题标题】:Silverlight text trimming and wrapping issueSilverlight 文本修剪和换行问题
【发布时间】:2013-05-22 18:35:22
【问题描述】:

我在 XAML 中有以下布局:

    <StackPanel Height="40">
        <TextBlock TextWrapping="Wrap" TextTrimming="WordEllipsis"  Margin="0,10,0,10"
                               LineHeight="18" FontSize="12">
                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce dapibus commodo dui vulputate laoreet. Donec metus purus, consectetur ut sagittis ut, vestibulum id diam. Suspendisse in urna sem. Ut purus arcu, placerat quis tempus cursus, elementum sed sem. Duis condimentum semper tortor, a pulvinar dolor semper sit amet.
        </TextBlock>
    </StackPanel>

所以在我的堆栈面板里面有一个文本框。在此示例中,我在父堆栈面板中设置了高度,但在我的实际应用程序中,它设置得更高。

我必须在多行中显示文本并使用省略号作为修剪行为。问题是如果我使用上面的 XAML 代码,文本的最后一行会被剪切。我附上了一张截图来说明这种行为:

有没有办法解决这个问题?预期的行为是只显示第一行和末尾的省略号。

【问题讨论】:

    标签: c# silverlight xaml


    【解决方案1】:

    嗯,问题是因为我使用了 StackPanels。 StackPanel 内的内容高度与显示其中的所有内容一样大。但是,父 StackPanel 有高度限制,里面的内容被剪掉了。

    我已经将我的 StackPanel 替换为 Grid 并且修剪和包装现在就像一个魅力。

    【讨论】:

      【解决方案2】:

      来自 MSDN (http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming%28v=vs.95%29.aspx)

      TextTrimming 属性无效,除非 TextWrapping 属性设置为 NoWrap。

      【讨论】:

      • 谢谢。那么有没有办法在 SL4 中创建多行、修剪的文本?如果我不想修剪,如何实现我提到的?
      • 您可能需要添加一些查看 TextBlock 大小的行为。然后在代码中创建一个与 TextBlock 宽度相同但没有大小限制的新 TextBlock。然后继续向新的 TextBlock 添加文本,这样您就知道在不超过原始 TextBlock 高度的情况下可以花费多少。然后运行一些添加省略号的自定义修剪功能。可能,但并不完全是微不足道的:)
      • 您确定那篇 MSDN 文章的正确性吗?在这篇文章 (codeproject.com/Tips/90849/Text-Trimming-in-Silverlight-4) 中,文本块用于修剪和换行。然而问题是它只有在我设置文本块的高度和宽度时才有效,而不是它周围的面板。
      • 有趣 - 我没有测试过这种情况,但如果它有效,您可能会添加一个更简单的行为,将文本块的高度绑定到其容器的高度。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2015-01-12
      • 2011-02-07
      • 2011-05-29
      相关资源
      最近更新 更多