【问题标题】:How to know if a text is too long for a textblock?如何知道文本对于文本块来说是否太长?
【发布时间】:2015-03-06 18:44:36
【问题描述】:

我有两个文本块。我想将自定义文本设置为第一个,如果太长而无法完全显示,我想将其继续到第二个文本框和第三个(如有必要)。

我该怎么做?有没有办法知道文本是否会被截断或包裹在文本块中?

感谢您的帮助!

【问题讨论】:

  • 只需使用 TextWrapping="Wrap"
  • 谢谢@dellywheel,但这不是我想要做的;)我希望我的文字显示在不同的位置,而不仅仅是从上到下。例如左上角的第一部分和页面中间的剩余部分。

标签: xaml


【解决方案1】:

对此没有开箱即用的解决方案。您可以尝试读取文本框的长度(ActualWidth 属性),看看它是否比它所在的容器长。

检查字符串的长度对于大多数字体来说不是一个有效的选项,因为在大多数字体中 W 比 I 占用更多的空间。

        if (TextBlock1.ActualWidth > 100)
        {
            TextBlock2.text = yourtext;
        }

确保文本环绕设置为 false。

【讨论】:

【解决方案2】:

你不需要它) 您只需将第一个 TextBlock 的 TextWrapping 属性设置为“Wrap”即可!

<TextBlock Text="Long text here" TextWrapping="Wrap"/>

编辑

将整个文本放入 TextBlock1。 TextBlock 限制 HERE 为 50,您可以随意设置。

string some = TextBlock1.Text;
if (some.Length > 50)
{
   TextBlock2.Text = some.Substring(50, some.Lenght - 50);
   some = some.Remove(51, some.Lenght - 50);
   TextBlock1.Text = some;
}

希望对你有帮助。

【讨论】:

  • 谢谢,但这不是我想做的 ;) 我希望我的文字显示在不同的位置,而不仅仅是从上到下。例如左上角的第一部分和页面中间的剩余部分。
  • @SeyoS 检查编辑。我找到了解决方案。
  • 这正是我在等待更好的解决方案时所做的。它并不完美,因为文本块的显示长度取决于所选字体。
  • @SeyoS 所以我没有其他解决方案(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 2010-11-29
  • 1970-01-01
  • 2017-03-07
  • 2014-07-27
  • 1970-01-01
  • 2011-06-27
相关资源
最近更新 更多