我可以将HTML绑定到WPF Web浏览器控件吗?

时间:2010-11-17 09:15:38

标签: wpf browser

假设我有一个属性HTML(字符串)。我可以将它绑定到WPF WebBrowser控件吗?有一个Source属性,我需要一个URI,但如果我在内存中有一个HTML字符串我想渲染,我可以这样做吗?我正在使用MVVM,所以我认为使用像webBrowser1.NavigateToString()等方法更难?我不知道控制名称?

1 个答案:

答案 0 :(得分:47)

请参阅this问题。

总结一下,首先要为WebBrowser创建一个附加属性

public 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 dependencyObject, DependencyPropertyChangedEventArgs e)
    {
        WebBrowser webBrowser = dependencyObject as WebBrowser;
        if (webBrowser != null)
            webBrowser.NavigateToString(e.NewValue as string ?? " ");
    }
}

然后你可以绑定到你的html字符串,每次你的html字符串改变时都会调用NavigateToString

<WebBrowser local:BrowserBehavior.Html="{Binding MyHtmlString}" />