2012-01-16 16 views
5

如何动态地将数据与富文本框的文档属性绑定。我正在使用Wpf中的MVVM与C#?如何使用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? 
+3

你尝试过什么了吗? – 2012-01-16 13:10:06

+0

yeap ..我尝试了这个例子在“http://www.codeproject.com/KB/WPF/BindableWPFRichTextBox.aspx”,但我不明白在这个例子中发生了什么。我很新的WPF和MVVM – Tanya 2012-01-16 13:14:51

+3

可能重复的[Richtextbox wpf绑定](http://stackoverflow.com/questions/343468/richtextbox-wpf-binding) – Ray 2012-01-16 13:15:31

回答

1

我希望我正确地解释你的问题: 我假设你绑定到一个普通的字符串(示例文本)与你从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>"