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

问题描述 投票:0回答:1

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

wpf webbrowser-control
1个回答
133
投票

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-namespace-alias):

<WebBrowser lcl:BrowserBehavior.Html="{Binding HtmlToDisplay}" />
© www.soinside.com 2019 - 2024. All rights reserved.