Windows Phone使用xaml中的绑定显示格式化文本

时间:2014-02-12 21:13:14

标签: silverlight xaml windows-phone-8 windows-phone

我有一个文本块,它绑定到数据源中的字符串。但是,字符串是html格式的(它有<p><a href>标签)。

我希望能够使用绑定显示格式化的字符串,所以我不想在转换器之外的代码中操作它。有没有办法用RichTextBox或其他控件来做到这一点?

2 个答案:

答案 0 :(得分:2)

MSP Toolkit尝试HTMLTextBox,它适用于此类情况。

答案 1 :(得分: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}" />