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

在WPF WebBrowser控件中显示字符串中的html,wpf,webbrowser-control,Wpf,Webbrowser Control,我的数据上下文对象包含一个字符串属性,该属性返回我需要在WebBrowser控件中显示的html;我找不到WebBrowser的任何属性来绑定它。有什么想法吗 谢谢 WebBrowser有一个方法,您可以使用该方法导航到HTML内容。如果希望能够绑定到该方法,可以创建一个附加属性,该属性可以在值更改时调用该方法: public static class BrowserBehavior { public static readonly DependencyProperty HtmlProp

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


谢谢

WebBrowser有一个方法,您可以使用该方法导航到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名称空间别名):



OnHtmlChanged的第二个参数应为DependencyPropertyChangedEventArgs类型。我已将其添加到代码中,但它不允许我进行编辑(这是必需的功能)。我是wpf的新手,所以我不确定要修改什么以允许我编辑html。WebBrowser控件显示html。如果你想编辑HTML,你必须使用另一个控件,比如TextBox或RichTextBox。这个答案是不完整的-PinnedInstrumentsViewModel是什么,我应该把它放在哪个类中?这基本上是相同的答案,但准备好了:@Simon_Weaver,你是对的,那是一种愚蠢的类型。我对它进行了更新,使其更有意义。
<WebBrowser lcl:BrowserBehavior.Html="{Binding HtmlToDisplay}" />