WPF RICHTEXTBOX 和資料庫讀寫圖文的方法
做一個專案,需要圖文一起存入資料庫,在網上瀏覽了很久。終於實現了在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的內容。