如何使用MVVM模式将数据与富文本框绑定?

Tan*_*nya 6 c# wpf mvvm

如何动态地将数据与富文本框的文档属性绑定.我在使用c#的Wpf中使用MVVM?

编辑:

我在"codeproject.com/KB/WPF/BindableWPFRichTextBox.aspx"中尝试了这个例子; 但我无法理解那个例子中发生了什么.我是WPF和MVVM的新手.

它在线上抛出错误

try { 
  var stream = new MemoryStream(Encoding.UTF8.GetBytes(GetDocumentXaml(richTextBox)));
  var doc = (FlowDocument)XamlReader.Load(stream); 
  // Set the document 
  richTextBox.Document = doc; 
} 
catch (Exception) { richTextBox.Document = new FlowDocument(); }
Run Code Online (Sandbox Code Playgroud)

错误类似于"根级别的数据无效.第1行,位置1".我给的价值就像"样本文本"

我发现xaml文本应该是这样的

<FlowDocument PagePadding="5,0,5,0" AllowDrop="True" xmlns="schemas.microsoft.com/winfx/2006/xaml/… generated by app back-end</Paragraph>
</FlowDocument>" But how to get this text?
Run Code Online (Sandbox Code Playgroud)

Sve*_*enG 2

我希望我正确地解释了你的问题:我假设你正在使用从 codeproject 获得的 RichTextBox 绑定到普通字符串(示例文本)。这不起作用,因为您必须绑定的文档是 FlowDocument 并且它具有特定的格式。如果您分配一个字符串,当它尝试从该字符串创建 FlowDocument 时,您将收到错误“数据无效”

以下是有关如何通过 XAML 或通过 CodeBehind 创建 FlowDocument 的链接。 http://msdn.microsoft.com/en-us/library/aa970909.aspx

然后转换器开始发挥作用:它根据字符串表示创建一个真正的 FlowDocument。

因此,如果您想显示示例文本,请绑定到虚拟机中的字符串,如下所示:

<FlowDocument PagePadding=\"5,0,5,0\" AllowDrop=\"True\" " 
                + "xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">"
                + "<Paragraph>Your sample text</Paragraph></FlowDocument>"
Run Code Online (Sandbox Code Playgroud)