做一個項目,需要圖文一起存入數據庫,在網上瀏覽了很久。終於實現了在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的內容。