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

时间:2012-01-16 13:05:24

标签: 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(); }

错误类似于“根级别的数据无效。第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?

1 个答案:

答案 0 :(得分:2)

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

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

然后转换器发挥作用:在字符串表示中,它创建一个真正的FlowDocument。

因此,如果要显示示例文本绑定到VM中的字符串,如下所示:

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