做一个项目,需要图文一起存入数据库,在网上浏览了很久。终于实现了在RICHTEXTBOX里面和数据库读写图文的方法。
存入数据库。
public string toxaml()
{
// Stream s = new MemoryStream(); // 其他的什么Stream类型都没问题
//// XamlWriter.Save(
MemoryStream s=new MemoryStream();
TextRange documentTextRange = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
documentTextRange.Save(s, DataFormats.XamlPackage);
return Convert.ToBase64String(s.ToArray());
//return Convert.ToString(s.ToArray());
}
然后存入数据库。
注意不能用//return Convert.ToString(s.ToArray());不知道什么原因。用这句存入数据库是SYSTEM..BYTE[] ?
读取数据库
TextRange tr = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
////convert string to MemoryStream
//MemoryStream ms = GetMemoryStreamFromString(buffer);
//tr.Load(ms, DataFormats.XamlPackage);
MemoryStream s = new MemoryStream((Convert.FromBase64String(buffer)));
// XmlReader xr = XmlReader.Create(s);
//FlowDocument fd = XamlReader.Load(xr) as FlowDocument;
//this.richTextBox1.Document = fd;
TextRange TR = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
TR.Load(s, DataFormats.XamlPackage);
Xaml文件有两种,一种是保存图片的地址的Xaml,另外一种是直接保存图片的XamlPackage。使用直接保存图片的模式,这样图片是以二进制的形式存在Xaml文件中的,读取后就不会有问题了。另外读取时使用的是TextRange.Load,格式选择就是XamlPackage。读取Xaml也没有问题,还可以读Rtf和Text文件。XamlReader不适合用来读取FlowDocument的内容。

本文介绍了一种在RichTextBox中实现图文混排,并通过XAML格式与数据库交互的方法。该方法利用XAMLPackage直接保存图片,确保了图片以二进制形式存储,避免了路径依赖问题。此外,还提供了如何将XAML数据读回RichTextBox的具体步骤。
2890

被折叠的 条评论
为什么被折叠?



