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

And*_*rey 61 wpf webbrowser-control

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

谢谢!

Abe*_*cht 120

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

你会像这样使用它(lclxmlns-namespace-alias 在哪里):

<WebBrowser lcl:BrowserBehavior.Html="{Binding HtmlToDisplay}" />
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是不完整的 - 什么是PinnedInstrumentsViewModel,我甚至把它放在哪个类中?这基本上是相同的答案,但准备好了:http://stackoverflow.com/a/4204350/16940 (3认同)