【问题标题】:How to put ellipsis (...) in RichTextBox如何在 RichTextBox 中放置省略号 (...)
【发布时间】:2017-08-30 14:44:18
【问题描述】:

我想在富文本框中添加一个省略号 (..)。

在正常的TextBlock 中,TextTrimming="WordEllipsis" 具有限制长度以允许省略号表示的属性,但富文本框则不允许。它现在应该只作为富文本框来实现。不允许使用文本块。

我想修剪两三行并添加一个省略号 (..) 选项。有什么好办法吗?

我想向你展示我是如何使用 RichTextBox 的,但是声誉很低。

【问题讨论】:

  • 虽然 TextBlock 旨在显示文本,但任何 TextBox 都旨在编辑文本。编辑未完整呈现的文本实际上效果不佳,因此您似乎想要显示文本,但出于某种原因,您更喜欢在 RichTextBox 中这样做...注意解释这个决定的一些背景?
  • TextBox TextTrimming的可能重复
  • @grek40 你是对的,我可以用 TextBlock 做到这一点。但我使用的是 RichTextBox,它可以支持可能包含类似文本的格式化文本。因此,为此我们使用了保存在数据库中的 rtf 文本格式,它保留了所有格式,我不知道 Textbloxk 是否很容易支持文本格式。现在已经使用了 RichTextBox,用 TextBlock 替换它会很困难,所以请提出任何使用 RichTextBox 的方法。

标签: wpf richtextbox ellipsis


【解决方案1】:

你没有

如 grek40 所述,省略号概念仅在 显示 文本时有效。 例如,假设显示了省略号,并且用户尝试部分选择您的RichTextBox 中的某些文本,包括省略号,选择的结果是什么?你说不出来。

也许

由于省略号通常是 Scrollbar 的替代,隐藏文本而不是允许您通过滚动访问它,您可以使用 WPF 样式来伪造它。 每当触发Scrollbar visibility trigger 时,创建一个显示省略号图标/图片的样式(位置由您决定)。一旦省略号可见,您将需要禁用Scrollbar。 这显然比简单地设置属性需要更多的努力,如果不仔细实施,很容易成为用户体验的噩梦,因此请注意。

注意:另一条评论(由 Walt Ritscher 撰写)链接到类似问题,那里的解决方案与此类似。

另类可能

另一个伪造的省略号可以通过使用两个不同的RichTextBox 控件来实现。 第一个RichTextBox 会将ReadOnly 设置为true。将您的文本修剪到最大允许长度,并附加一个省略号并将其显示在第一个 RichTextBox 中。 当用户需要编辑文本时,隐藏第一个 RichTextBox 并显示包含整个文本的第二个 RichTextBox

【讨论】:

  • 请查看我上面的 cmets。
  • @KangDongGyun,你没有添加任何关于你的问题的新细节。 RichTextBoxTextBox(不是 TextBlock)都不支持省略号。使用 TextBlock 是不可能的,因为它不支持您需要的 RichTextBox 的特殊文本格式。正如我已经说过的,您只能通过某种 hack 来实现这一点。
  • @KangDongGyun 我添加了另一个替代方案,它应该更容易实现。不过仍然只是一个 hack。
  • 我已经知道很难正常实现。感谢您的良好反馈。我对您的友好解释感到非常满意。
猜你喜欢
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2020-04-23
  • 2015-01-08
  • 2013-03-15
  • 1970-01-01
  • 2012-08-16
相关资源
最近更新 更多