2014-02-12 53 views
1

我有一個文本塊綁定到數據源中的字符串。但是,該字符串是html格式的(它有<p><a href>標籤)。Windows Phone使用xaml中的綁定顯示格式化的文本

我希望能夠使用綁定顯示格式化的字符串,所以我不想在轉換器以外的代碼中操作它。有沒有辦法做到這一點與RichTextBox,或其他控制?

回答

2

嘗試HTMLTextBoxMSP Toolkit,它適用於這種情況下很好。

0

您可以託管WebBrowser控件並使用NavigateToString方法顯示HTML。 如果你想使用MVVM和數據綁定,下面是我爲完全相同的用例創建的附加屬性。

public static class WebBrowserExtensions 
    { 

    public static readonly DependencyProperty HtmlProperty = 
     DependencyProperty.RegisterAttached(
     "Html", 
     typeof(string), 
     typeof(WebBrowserExtensions), 
     new PropertyMetadata(null, OnHtmlChanged)); 

    public static void SetHtml(WebBrowser webBrowser, string html) 
    { 
     webBrowser.SetValue(HtmlProperty, html); 
    } 

    public static string GetHtml(WebBrowser webBrowser) 
    { 
     return (string)webBrowser.GetValue(HtmlProperty); 
    } 

    private static void OnHtmlChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) 
    { 
     var webBrowser = (WebBrowser)sender; 
     if (webBrowser != null) 
     { 
     var body = GetHtml(webBrowser); 
     var style = "<style>"; 
     var background = "white"; 
     var foreground = "black"; 
     style += "body{background-color: " + background + "; color: " + foreground + ";}"; 
     style += "</style>"; 
     var html = "<!DOCTYPE html><html><head>" + style + "</head><body>" + body + "</body></html>"; 
     webBrowser.NavigateToString(html); 
     } 
    } 
} 

然後,您可以使用它像這樣:

<phone:WebBrowser 
    local:WebBrowserExtensions.Html="{Binding Path=Text}" /> 
+0

感謝您的答覆!看起來,OnHtmlChanged方法獲得了正確的格式,但我在實際的WebBrowser上看不到任何內容。我在WebBrowser上丟失了什麼來顯示它? – user1145998

+0

我的錯誤,這是別的。這似乎工作完美! – user1145998

相關問題