C#WPF - 字符串(存储在数据库中)From/To RichTextBox

Sae*_*see 1 c# database xaml binding richtextbox

我花了一天的时间在互联网上搜索我的问题的解决方案但没有成功......理论上这似乎很简单.

我在XAML中有一个RichTextBox.我在我的数据库中有一个名为"content"的字段"LongText"

我只是希望我的数据库以简单的样式(粗体,斜体,下划线)保存RichTextBox的内容,并且我可以调用我的数据库,填充我的数据库中存储的RichTextBox内容,同时保持文本的样式.

之后,我将不得不将这些数据显示为博客,但是......必须已经成功保存并加载数据.

XAML:

<RichTextBox x:Name="nameTextEditor" TabIndex="2" Grid.Row="2" SpellCheck.IsEnabled="True">
Run Code Online (Sandbox Code Playgroud)

C#

FlowDocument doc = new FlowDocument();
        StringReader sr = new StringReader(monArticle.Content);
        XmlReader xmlReader = XmlReader.Create(sr);
        Section sec = XamlReader.Parse(monArticle.Content) as Section;
        while (sec.Blocks.Count > 0)
        {
            var block = sec.Blocks.FirstBlock;
            sec.Blocks.Remove(block);
            doc.Blocks.Add(block);
        }
        nameTextEditor.Document = doc;
Run Code Online (Sandbox Code Playgroud)

不要使用错误:"Exception XamlParseException""Donnéesnonvalides au niveau racine.Ligne 1,position 1."

这不是我尝试的唯一代码,但是我在不理解单词的情况下进行测试...为什么"获取RichTextBox的内容"并"在我的数据库中发送"并不容易?

谢谢你的帮助

Jar*_*das 6

    var doc = rtb.Document;
    var range = new TextRange(doc.ContentStart, doc.ContentEnd);
    var ms = new MemoryStream();
    range.Save(ms, DataFormats.Rtf);
    ms.Seek(0, SeekOrigin.Begin);

    var rtfString=new StreamReader(ms).ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

现在将rtfString发送到数据库.要在richtext框中显示它:

var doc = rtb.Document;
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
var ms = new MemoryStream();
var sw = new StreamWriter(ms);
sw.Write(rtfString);
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
range.Load(ms, DataFormats.Rtf);
Run Code Online (Sandbox Code Playgroud)