代码之家  ›  专栏  ›  技术社区  ›  Andrey

在WPF WebBrowser控件中显示字符串中的HTML

  •  56
  • Andrey  · 技术社区  · 16 年前

    我的数据上下文对象包含一个字符串属性,它返回我需要在WebBrowser控件中显示的HTML;我找不到任何要绑定它的WebBrowser属性。有什么想法吗?

    谢谢!

    1 回复  |  直到 10 年前
        1
  •  111
  •   MrWombat    11 年前

    这个 WebBrowser 有一个 NavigateToString 可用于导航到HTML内容的方法。如果希望能够绑定到它,则可以创建一个附加属性,该属性只在值更改时调用方法:

    public static class BrowserBehavior
    {
        public static readonly DependencyProperty HtmlProperty = DependencyProperty.RegisterAttached(
            "Html",
            typeof(string),
            typeof(BrowserBehavior),
            new FrameworkPropertyMetadata(OnHtmlChanged));
    
        [AttachedPropertyBrowsableForType(typeof(WebBrowser))]
        public static string GetHtml(WebBrowser d)
        {
            return (string)d.GetValue(HtmlProperty);
        }
    
        public static void SetHtml(WebBrowser d, string value)
        {
            d.SetValue(HtmlProperty, value);
        }
    
        static void OnHtmlChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            WebBrowser wb = d as WebBrowser;
            if (wb != null)
                wb.NavigateToString(e.NewValue as string);
        }
    }
    

    你可以这样使用它(在哪里 lcl 是xmlns命名空间别名):

    <WebBrowser lcl:BrowserBehavior.Html="{Binding HtmlToDisplay}" />