【发布时间】:2014-08-31 15:39:23
【问题描述】:
我有以下代码可以将 RichTextBox 保存到 RTF 并立即重新加载它 - 我之前已将其发布在 this question 中,并在序列化/反序列化 RTF 时使用它来显示问题:
public Stream GenerateStreamFromString(string s)
{
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
private async void SaveAndReloadButton_Click(object sender, RoutedEventArgs e)
{
string data = null;
var range = new TextRange(this.RichText.Document.ContentStart, this.RichText.Document.ContentEnd);
using (var memoryStream = new MemoryStream())
{
range.Save(memoryStream, DataFormats.Rtf);
memoryStream.Position = 0;
using (StreamReader reader = new StreamReader(memoryStream))
{
data = await reader.ReadToEndAsync();
}
}
// load
var stream = GenerateStreamFromString(data);
range = new TextRange(this.RichText.Document.ContentStart, this.RichText.Document.ContentEnd);
range.Load(stream, DataFormats.Rtf);
}
我现在正在尝试将格式更改为DataFormats.Rtf,这是我从this blog post 发现的一种格式。现在,如果我在上面的代码中简单地将DataFormats.XamlPackage 替换为DataFormats.XamlPackage,我会在调用range.Load(...) 时得到以下异常:
“System.ArgumentException”类型的异常发生在 PresentationFramework.dll 但未在用户代码中处理
附加信息:数据格式中的结构无法识别 'XamlPackage'。
谁能解释为什么会这样?
【问题讨论】:
标签: c# wpf xaml richtextbox