【发布时间】:2018-10-12 19:07:09
【问题描述】:
苦于如何成功保存和加载包含以下所有内容的 System.Windows.Controls.RichTextBox 内容:格式化文本、图像、自定义类型定义的标记元素、自定义动态标记元素。
通过令牌元素,我的意思是我的自定义类继承自 System.Windows.Documents.Run,其中类型定义不需要记住任何动态设置的属性值(因为根据需要执行的类型执行操作加载后记住)和动态的也需要保留动态设置的属性(动作不仅基于类型,还基于这些设置值)。
我知道以下 3 种保存/加载方法,但都不够:
1)
string xamlStream = System.Windows.Markup.XamlWriter.Save(myRichTxtBx.Document);
然后保存字符串
2)
TextRange content = new TextRange(myRichTxtBx.Document.ContentStart, myRichTxtBx.Document.ContentEnd);
content.Save(myFileStream, DataFormats.XamlPackage, true);
3)
TextRange content = new TextRange(myRichTxtBx.Document.ContentStart, myRichTxtBx.Document.ContentEnd);
content.Save(myFileStream, DataFormats.Xaml, true);
这些是那些问题:
1) 重启应用后无法加载图片(但记得属性)
2) 不记得属性(但重启应用后能够加载图像)
3) 即使在同一个应用实例中也不会加载图像,也不记得属性值
我只能找到解决图像保存问题 (2) 或属性问题 (1) 的答案,但不能同时解决这两个问题。
目标是拥有一个可标记的 RichTextBox,其中标记要么被基于提供的 ORM 对象(= 类型定义的标记)的数据库中的值替换,要么由用户再次基于提供的 ORM 对象动态设置值.
【问题讨论】:
标签: c# serialization richtextbox flowdocument