1

当我们有多行文本时,我们需要显示字符省略号(即显示修剪的文本)。

当内容大于多行 TextBlock 的宽度时(即 TextWrapping 设置为 Wrap),文本块显示尾随省略号。

但是我们有一种情况,无论第一行的文本宽度是否大于文本块的宽度,我们只需要用省略号显示一行。

例如,考虑以下示例文本

String str = "1\n2\n3456\n45889";
textBlock.Text = str;

TextBlock 应显示如下:

1...

并且工具提示将显示整个文本。我尝试对可能性进行一些研究,但找不到太多帮助,并且想知道社区中是否有人遇到过这种情况或者可以建议我?

因为,我们不应该更改底层数据对象(实时场景)而只更改呈现给用户的内容,我猜 Converter 应该可以解决问题,但我仍然坚持如何继续。或者你们还有其他选择吗?

4

1 回答 1

0

创建基于处理椭圆所需业务逻辑的文本块的自定义控件。

将实际文本绑定到特定属性可以确保文本不被更改。在一个单独的属性中,您拥有带有椭圆的可视文本,当原始文本更改(依赖属性更改事件)时会更新该椭圆,并且可视文本随后显示在屏幕上。还将工具提示绑定到原始文本,这有助于显示实际文本而不是省略号文本。

通过创建一个简单的自定义控件,您可以在一个位置处理所有业务逻辑,并且可以在其他屏幕和项目中使用它。

于 2014-11-14T19:17:05.010 回答