我目前正在尝试将Matthew的RTF和XAML之间的转换代码示例移植到WinRT
我已经让HTML代码正常工作了,但是我在进入RichEditBox时遇到了一个障碍。
Matthew的代码基于WPF,并使用以下函数将XAML转换为RTF。
private static string ConvertXamlToRtf(string xamlText)
{
var richTextBox = new RichTextBox();
if (string.IsNullOrEmpty(xamlText)) return "";
var textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
using (var xamlMemoryStream = new MemoryStream())
{
using (var xamlStreamWriter = new StreamWriter(xamlMemoryStream))
{
xamlStreamWriter.Write(xamlText);
xamlStreamWriter.Flush();
xamlMemoryStream.Seek(0, SeekOrigin.Begin);
textRange.Load(xamlMemoryStream, DataFormats.Xaml);
}
}
using (var rtfMemoryStream = new MemoryStream())
{
textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
textRange.Save(rtfMemoryStream, DataFormats.Rtf);
rtfMemoryStream.Seek(0, SeekOrigin.Begin);
using (var rtfStreamReader = new StreamReader(rtfMemoryStream))
{
return rtfStreamReader.ReadToEnd();
}
}
}我试过用WinRT用RichEditBox重写它,但遇到了一些问题。最值得注意的是,WPF TextRange接受XAML数据格式,但是WinRT ITextRange没有这种格式。但是,我知道我可以直接将XAML注入RichTextBlock控件。
有没有办法以编程的方式将文本从RichTextBlock复制并粘贴到RichEditBox中?
如果或没有做到这一点,是否有办法将WinRT / Windows应用程序中的WinRT转换为RTF?
发布于 2014-02-28 10:04:30
我从msdn Windows应用程序论坛的Rob Caplan那里得到了答案
http://social.msdn.microsoft.com/Forums/windowsapps/en-US/c5f4e679-c563-463c-b812-05b16cd5720f/converting-html-to-rtf-using-richeditbox-and-richtextbox?forum=winappswithcsharp
直接引用:
“您必须自己进行转换。RichEdiBox没有任何本机转换能力。它直接呈现RTF,并且不将其转换为Xaml。这与WPF实现不同,后者转换RTF而不是直接显示它。”
好吧,那就这样。我目前正在为WinRT的使用调整一个开放源代码的RTF库。完成后我会发邮件的。
编辑
罗伯错了!这是可能的,尽管是通过一个解决办法。我想出了如何使用DataPackage类来实现它。完整答案在这里:https://stackoverflow.com/a/22093837/352867
https://stackoverflow.com/questions/21991309
复制相似问题