我有一個文本塊綁定到數據源中的字符串。但是,該字符串是html格式的(它有<p>
和<a href>
標籤)。Windows Phone使用xaml中的綁定顯示格式化的文本
我希望能夠使用綁定顯示格式化的字符串,所以我不想在轉換器以外的代碼中操作它。有沒有辦法做到這一點與RichTextBox
,或其他控制?
我有一個文本塊綁定到數據源中的字符串。但是,該字符串是html格式的(它有<p>
和<a href>
標籤)。Windows Phone使用xaml中的綁定顯示格式化的文本
我希望能夠使用綁定顯示格式化的字符串,所以我不想在轉換器以外的代碼中操作它。有沒有辦法做到這一點與RichTextBox
,或其他控制?
嘗試HTMLTextBox
從MSP Toolkit,它適用於這種情況下很好。
您可以託管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}" />
感謝您的答覆!看起來,OnHtmlChanged方法獲得了正確的格式,但我在實際的WebBrowser上看不到任何內容。我在WebBrowser上丟失了什麼來顯示它? – user1145998
我的錯誤,這是別的。這似乎工作完美! – user1145998