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的內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章