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

本文关键字:文本 绑定 数据 何使用 MVVM 模式 | 更新日期: 2023-09-27 18:20:21

如何与富文本框的document属性动态绑定数据。我正在Wpf中使用带有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?

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

我希望我能正确解释你的问题:我假设您使用从代码项目获得的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>"