如何加载 WPF 格式化文本对象(从 RTF 或 RichTextBox)

How to load a WPF FormattedText object (from RTF or RichTextBox)

我的 WPF 应用在大型 canvas(一种 post it note 应用)

的不同位置显示大量文本片段

我目前正在使用 FormattedText 对象和 'drawing them' 直接将文本呈现为 Visual 对象(对于 speed/efficiency)

我面临的挑战是如何 load/save/edit 该富文本。我想使用 RichTextBox 来编辑文本 - 但我找不到将文本从文本框中取出并放入 FormattedText 对象(反之亦然)的方法

有人知道如何实现吗?我能想到的唯一方法是在 FormattedText 对象上具有某种 'serialise to/from RTF' 功能 - 但似乎不存在。

谢谢

您可以遍历 RichTextBox.Document 内的所有内联对象,获取您感兴趣的所有依赖属性,然后将它们设置在新的 FormattedText 对象上。

var formattedTextToDraw = new List<FormattedText>();

foreach (var paragraph in RichTextBox.Document.OfType<Paragraph>())
{
    foreach(var inline in paragraph)
    {
        formattedTextToDraw.Add(new FormattedText(
            inline.Text, //Text
            inline.FontSize, //Fontsize
            inline.Foreground, //Color
            etc....) //Other properties for FormattedText constructor
    }
}

上面 Clemens 发布的 link http://www.wpfmentor.com/2009/01/how-to-transfer-rich-text-from.html 解决了我的问题。

类似于 fooook 的回答 - 遍历内联对象并将它们的属性应用于 FormattedText 对象。

遗憾的是 FormattedText 不支持图像(比如 iOS/OSX 上的 NSAttributedString)