Отображение HTML из строки в элементе управления WPF WebBrowser - PullRequest
58 голосов
/ 06 апреля 2010

Мой объект контекста данных содержит строковое свойство, которое возвращает HTML, который мне нужно отобразить в элементе управления WebBrowser;Я не могу найти какие-либо свойства WebBrowser, чтобы связать его с.Есть идеи?

Спасибо!

1 Ответ

114 голосов
/ 06 апреля 2010

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):

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