如何将具有所有颜色的 richtextbox 的文本保存到 json 中,以便在之后放回去

How can I save the text of a richtextbox with all the color into a json to put it back after

我在 WPF 上,我有一个有很多不同颜色、大小、bold/underline 文本等的 richtextbox,我现在想知道如何将所有这些文本保存到 json 文件或对象的参数以便稍后将其放回

RichTextBox.SaveFile(); // dont exist 

我无法序列化 Richtextbox.Document 它给我一个循环错误 谢谢

基于these instructions and the documentation of TextRange,我创建了一个获取RTF格式的RichTextBox内容的小方法:

string GetRtf(RichTextBox rtb)
{
    TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    using (var stream = new MemoryStream())
    {
        textRange.Save(stream, DataFormats.Rtf);
        stream.Position = 0;
        using (var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }
} 

当然,你也可以直接将内容保存到FileStream而不是MemoryStream
您可以使用此方法将内容作为字符串获取并将其保存在您想要的任何位置。稍后您将需要 Load() 将其读回您的控件中。