2014-02-24 38 views
1

我目前正試圖端口馬修Manela的"Converting between RTF and XAML"代碼示例的WinRTXAML噴吹成RichEditBox

我有工作的HTML XAML代碼,但我得到它爲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(); 
     } 
    } 
} 

我試着用RichEditBox在WinRT中重寫這一點,但遇到了一些問題。最值得注意的是,WPF TextRange接受XAML數據格式,但WinRT ITextRange沒有這個。但是,我知道我可以將XAML直接注入到控件中。

有沒有什麼辦法從RichTextBlock複製文本並以編程方式將其粘貼到RichEditBox中?

,否則,有沒有辦法將HTML轉換爲RTF,在WinRT/Windows商店應用程序中工作?

+0

只有一個評論。不是同一個問題,但可能會發現一些亮點。 http://underground.infovark.com/2011/03/03/highlighting-query-terms-in-a-wpf-textblock/ – Paparazzi

+0

再次不一樣,但可能有助於http://stackoverflow.com/questions/3728584/ how-to-display-search-results-in-a-wpf-items-control-with-highlight-query-term – Paparazzi

+0

謝謝,雖然我沒有突出問題的問題,但在RichEditBox或RichTextBlock中都很容易。我無法將內容從一個移動到另一個。 – roryok

回答

1

我從羅布·卡普蘭我的回答對MSDN Windows應用論壇

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而不是直接顯示它。

那麼,就是這樣。我目前正在修改一個開源的RTF庫以用於WinRT。完成後我會發布。

編輯

搶錯了!它可能,雖然通過解決方法。我想出瞭如何使用DataPackage類來做到這一點。完整答案在這裏:https://stackoverflow.com/a/22093837/352867

+0

如果圖像包含在HTML中,則不起作用。 – Shefali

+0

@Shefali我想這取決於圖像來自何處,以及它們是否具有絕對路徑等。可以將src中的相對路徑轉換爲絕對路徑,然後進行復制 – roryok