Windows 8.1 应用程序:使用换行、最大行数或最大高度识别 TextBlock 的 UI 文本截断
Posted
技术标签:
【中文标题】Windows 8.1 应用程序:使用换行、最大行数或最大高度识别 TextBlock 的 UI 文本截断【英文标题】:Windows 8.1 app : Identify UI text truncation for TextBlock with wrap, max lines or max height applied 【发布时间】:2019-08-21 15:23:43 【问题描述】:我需要确定文本是否在 UI 中以编程方式被截断并应用了换行,前提是不应用单词修剪。
这是一个使用 xaml、c# 的 8.1 桌面应用程序。
这是一个跨国应用程序,文本的长度是动态的。以下是TextBlock
的示例。
<TextBlock Text="StaticResource Title" FontSize="34" Max Margin="0,20,0,0"
TextWrapping="Wrap" Maxlines="3"/>
【问题讨论】:
那么,是否需要测量Text,看是否会溢出TextBlock的边界? 是的,你是对的。 查看FormattedText 类。 嗨。 @Jimi 这仅适用于 WPF 应用程序,这是 Windows 8.1 应用程序。不可能 您是指 UWP 应用吗?你知道,TextBlock
...参见UIElement.Measure() 方法。 (例如,[TextBlock].Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
。然后,而不是,例如,GetPreferredSize()
,阅读TextBlock.DesiredSize。
【参考方案1】:
最后我在上面提到的 cmets 的帮助下得出了答案。步骤如下:
-
确定应用上述约束的文本块的高度/宽度。
然后移除约束并使用
[TextBlock].Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
测量高度/宽度
比较之前和当前的高度/宽度。如果当前宽度/高度大于约束宽度/高度,则文本被截断。
【讨论】:
以上是关于Windows 8.1 应用程序:使用换行、最大行数或最大高度识别 TextBlock 的 UI 文本截断的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 8.1 中以编程方式更改当前的 Windows 主题?
phpstorm设置换行兼容Windows(CRLF)和Linux(LF)