2010-09-07 151 views
1

我正在使用Microsoft的XAML/HTML converter將HTML數據庫中的HTML轉換爲XAML字符串。 Microsoft轉換器似乎正確地格式化文本,但我遇到了將輸出綁定到XAML對象的麻煩。WPF FlowDocument綁定

例如,使用下面的HTML:

<span style="font-weight: bold; font-family: Georgia; color: rgb(0, 96, 144); text-decoration: underline;">Hello world.</span> 

我將得到XAML輸出:

<Section xml:space="preserve" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
<Paragraph> 
    <Run FontWeight="bold" TextDecorations="Underline" FontFamily="georgia">Hello world.</Run> 
</Paragraph> 

假設HTML正進入WPF應用程序的「文本「數據庫對象的屬性,然後我使用綁定和轉換器像這樣:

<TextBlock Text="{Binding Path=ActiveDataItem.Text, Converter={StaticResource convertHTMLToXaml}}" /> 

不幸的是,這只是將XAML打印到頁面,並沒有解析它。我假設這是因爲我綁定到TextBlock,這是預期的結果。我的問題是我如何綁定這個輸出FlowDocument相關的控件,如段落,運行,部分,或其他?

注:我意識到有相當多的線程致力於將HTML轉換爲XAML。我已經提到了其中的大部分,但他們都缺乏這一特定步驟。任何幫助或鏈接表示讚賞,在此先感謝。

回答

2

對於您的示例,您將xaml作爲文本並綁定到Text-property。這隻會將xaml顯示爲文本。

如果有一種直接的方式將其作爲FlowDocument的內容綁定,我不知道。由於FlowDocument的結構,這是不可能的。但也許有人知道一種方式,併爲此發佈解決方案。

要手動完成,請看this page的示例。在那裏我看到作者將一個XAML字符串加載到RichTextBox中。您可以根據需要更改代碼(RichtTextBox也適用於FlowDocs)。搜索公共靜態類RichTextboxAssistant,有您尋找的代碼。照顧編碼。他使用ASCII。也許你必須將其更改爲UTF。

希望這會有所幫助。

+0

我最終使用該RichTextboxAssistant類的一個版本來擴展Document屬性作爲依賴屬性,以便我可以綁定到它。然後,我不得不刪除RichTextEditor的邊框和背景顏色,以便文本顯示在背景上,而不是在TextBox中。不是最好的解決方案,但它的工作! – 2010-09-09 17:14:14

1
  • 對於以前的.NET版本4.0:在this link,文森特·範登BERGHE解釋如何擴展的FlowDocument支持 '可綁定運行',檢查出來

  • 對於.NET 4.0:Run.Text屬性是可綁定的