Come si salva il contenuto RichTextBox nella colonna varbinary (array di byte) SQL?
-
06-07-2019 - |
Domanda
Voglio salvare il contenuto di un RichTextBox in varbinary (= array di byte) in formato XamlPackage. Ho bisogno di consigli tecnici su come farlo.
In realtà ho bisogno di sapere come convertire tra FlowDocument in array di byte.
Si consiglia persino di memorizzarlo come varbinary o questa è una cattiva idea?
Aggiorna
Snippet di codice:
///Load
byte[] document = GetDocumentFromDataBase();
RickTextBox tb = new RickTextBox();
TextRange tr = new TextRange(tb.Document.ContentStart, tb.Document.ContentEnd)
tr.Load(--------------------------) //Load from the byte array.
///Save
int maxAllowed = 1024;
byte[] document;
RichTextBox tb = new RichTextBox();
//User entered text and designs in the rich text
TextRange tr = new TextRange(tb.Document.ContentStart, tb.Document.ContentEnd)
tr.Save(--------------------------) //Save to byte array
if (document.Length > maxAllowed)
{
MessageBox.Show((document.Length - maxAllowed) + " Exceeding limit.");
return;
}
SaveToDataBase();
TextRange
Soluzione
Non riesco a trovare il mio esempio completo in questo momento, ma puoi usare XamlReader e XamlWriter per ottenere il documento dentro e fuori da una stringa. Da lì, puoi utilizzare UnicodeEncoding, AsciiEncoding o qualsiasi codificatore che desideri ottenere da e dentro i byte.
Il mio esempio più breve per impostare il documento da una stringa ... docReader è il mio lettore di documenti di flusso
private void SetDetails(string detailsString)
{
if (docReader == null)
return;
if (String.IsNullOrEmpty(detailsString))
{
this.docReader.Document = null;
return;
}
using (
StringReader stringReader = new StringReader(detailsString))
{
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(stringReader))
{
this.docReader.Document = XamlReader.Load(reader) as FlowDocument;
}
}
}