WPF 读取和存储RichTextBox的文档内容
在编辑RichTextBox内容时,我们看不到其文档的源码内容,因为我们没有像在Web开发中那样有浏览器自带的翻译功能可以使用(相关内容http://blog.sina.com.cn/s/blog_685790700100l61i.html)。
将会用到两个对象
System.Windows.Markup命名空间下的XamlWriter对象和XamlReader对象。
http://msdn.microsoft.com/zh-cn/library/system.windows.markup.xamlwriter.aspx
http://msdn.microsoft.com/zh-cn/library/system.windows.markup.xamlreader.aspx
利用XamlReader.Create()方法,读取内容并创建一个XamlReader对象实例。
string xw = System.Windows.Markup.XamlWriter.Save(rtb2.Document);
MessageBox.Show(xw);
System.IO.StringReader sr = new System.IO.StringReader(xw);
System.Xml.XmlReader xr = System.Xml.XmlReader.Create(sr);
rtb1.Document = (FlowDocument)System.Windows.Markup.XamlReader.Load(xr);
然后将xw再转换成rtb1的内容(FlowDocument)。
另外,MessageBox.Show(xw)可以看到,无论将什么对象通过XamlWrite序列化成字符床,都会加入一个Xmlns属性,这个属性指定文档命名空间,所以,直接XamlReader一个Xaml格式的字符串还不够,还需要加入Xmlns属性。通过XamlWrite读取是自动就加上了的,如果想手工输入Xaml格式的字符串别忘了Xmlns。