web-dev-qa-db-fra.com

Affichage du code HTML à partir d'une chaîne dans le contrôle WPF WebBrowser

Mon objet de contexte de données contient une propriété de chaîne qui renvoie du code HTML que je dois afficher dans le contrôle WebBrowser; Je ne trouve aucune propriété de WebBrowser à laquelle le lier. Des idées?

Merci!

60
Andrey

La WebBrowser possède une méthode NavigateToString que vous pouvez utiliser pour accéder au contenu HTML. Si vous souhaitez pouvoir vous y lier, vous pouvez créer une propriété attachée qui peut simplement appeler la méthode lorsque la valeur change:

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);
    }
}

Et vous l'utiliseriez ainsi (où lcl est l'alias xmlns-namespace-alias):

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