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

Можно ли связать HTML с элементом управления веб-браузером WPF?

Предположим, что у меня есть свойство HTML (строка). Можно ли связать это с элементом управления WPF WebBrowser? Есть свойство Source, где мне нужен URI, но если у меня есть строка HTML в памяти, которую я хочу отобразить, могу ли я сделать это? Я использую MVVM, поэтому я думаю, что его труднее использовать методы, такие как webBrowser1.NavigateToString() и т.д.? Потому что я не буду знать имя управления?

4b9b3361

Ответ 1

См. этот вопрос.

Подводя итог, сначала создайте Attached Property для WebBrowser

public 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 dependencyObject, DependencyPropertyChangedEventArgs e)
    {
        WebBrowser webBrowser = dependencyObject as WebBrowser;
        if (webBrowser != null)
            webBrowser.NavigateToString(e.NewValue as string ?? " ");
    }
}

И затем вы можете привязать к своей строке html, и NavigateToString будет вызываться каждый раз, когда изменяется строка html

<WebBrowser local:BrowserBehavior.Html="{Binding MyHtmlString}" />