我想以XamlPackage格式将RichTextBox的内容保存到varbinary(= byte array)。 我需要技术方面的建议。
我实际上需要知道如何在FlowDocument和字节数组之间进行转换。
是否甚至建议将其存储为varbinary,或者这是一个坏主意?
更新
代码段:
///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
答案 0 :(得分:0)
我现在无法找到我的完整示例,但您可以使用XamlReader和XamlWriter将文档放入和转出字符串。从那里,您可以使用UnicodeEncoding,AsciiEncoding或任何您希望将其输入和输出的编码器。
我从字符串设置文档的简短示例... docReader是我的流文档阅读器
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;
}
}
}