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 8.1 中以编程方式更改当前的 Windows 主题?

phpstorm设置换行兼容Windows(CRLF)和Linux(LF)

git core.autocrlf配置 解决Windows和Linux(Mac)换行问题

Linux和Windows的换行兼容问题

windows 控制台 命令行指令换行