將RTF字符串轉換爲C#中的XAML字符串的最有效方法是什麼?我想使用System.Windows.Documents.XamlRtfConverter.ConvertRtfToXaml(string rtfContent)
,但不幸的是,課程是內部的。將RTF字符串轉換爲XAML字符串
5
A
回答
5
您可以從一個RTF字符串到XAML串去,但你失去了圖片:
var rtf = File.ReadAllText(rtfFileName);
var doc = new FlowDocument();
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
using (var inputStream = new MemoryStream(Encoding.ASCII.GetBytes(rtf)))
{
range.Load(inputStream, DataFormats.Rtf);
using (var outputStream = new MemoryStream())
{
range.Save(outputStream, DataFormats.Xaml);
outputStream.Position = 0;
using (var xamlStream = new StreamReader(outputStream))
{
var xaml = xamlStream.ReadToEnd();
File.WriteAllText(xamlFileName, xaml);
}
}
}
要保留您從RTF串去一個XAML包裝圖片:
var rtf = File.ReadAllText(rtfFileName);
var doc = new FlowDocument();
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
using (var inputStream = new MemoryStream(Encoding.ASCII.GetBytes(rtf)))
{
range.Load(inputStream, DataFormats.Rtf);
using (var outputStream = new FileStream(xamlFileName, FileMode.Create))
{
range.Save(outputStream, DataFormats.XamlPackage);
}
}
1
使用System.Reflection在System.Windows.Documents中調用內部方法XamlRtfConverter(需要參考PresentationFramework.dll)。 它可以在Parallel.ForEach()中進行數千次轉換,而不會發生內存崩潰(與通過RichTextBox進行轉換相反)。
private static string ConvertRtfToXaml(string rtfContent)
{
var assembly = Assembly.GetAssembly(typeof(System.Windows.FrameworkElement));
var xamlRtfConverterType = assembly.GetType("System.Windows.Documents.XamlRtfConverter");
var xamlRtfConverter = Activator.CreateInstance(xamlRtfConverterType, true);
var convertRtfToXaml = xamlRtfConverterType.GetMethod("ConvertRtfToXaml", BindingFlags.Instance | BindingFlags.NonPublic);
var xamlContent = (string)convertRtfToXaml.Invoke(xamlRtfConverter, new object[] { rtfContent });
return xamlContent;
}
相關問題
- 1. 將字符串轉換爲字符串
- 2. 將字符串轉換爲字符串
- 3. 將字符串轉換爲字符串
- 4. 將RTF字符串中的unicode字符轉換爲純文本
- 5. 將字符串轉換爲int,int轉換爲字符串
- 6. 如何將UTF-8字符串轉換爲java中的RTF字符串?
- 7. 將字符串轉換爲字符ascii
- 8. Java - 將字符串轉換爲字符[]
- 9. C++ - 將字符串轉換爲字符
- 10. 將字符*轉換爲字符串
- 11. 將字符串轉換爲字符
- 12. 將字符串轉換爲const *字符
- 13. 將字符[]轉換爲字符串
- 14. InfixToPostfix將字符轉換爲字符串
- 15. 將字符串轉換爲字符
- 16. 將char字符串轉換爲字符
- 17. 將字符串轉換爲字符
- 18. 將轉換器映射字符串轉換爲字符串
- 19. 將字符串轉換爲「_」
- 20. 將字符串轉換爲
- 21. 將字符串轉換爲?
- 22. 如何將字符串的字符串轉換爲字符?
- 23. JQuery.each將字符串文字轉換爲字符串。爲什麼?
- 24. 將字符串轉換爲字符串後無法反轉字符串Array
- 25. 將字符串替換爲字符串
- 26. 轉:將字符串數組轉換爲Json數組字符串
- 27. 將字符串語句轉換爲切換字符串語句
- 28. 轉換數字字符串轉換爲字符串
- 29. Ruby:將時間字符串轉換爲xsd:datetime符合字符串?
- 30. 將unicode字符串轉換爲字節字符串
什麼是Xaml字符串? – 2014-09-30 15:04:12
@MehdiKhademloo閱讀[標籤維基](http://stackoverflow.com/tags/xaml/info) – 2014-09-30 15:19:48
我知道,但'RTF字符串'相關的'XAML字符串是奇怪的... – 2014-09-30 15:28:21