Подтвердить что ты не робот

Отображение html из строки в элементе управления WPF WebBrowser

Объект контекста данных содержит свойство string, которое возвращает html, который должен отображаться в элементе управления WebBrowser; Я не могу найти какие-либо свойства WebBrowser для привязки. Любые идеи?

Спасибо!

4b9b3361

Ответ 1

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}" />