WebBrowser採用MVVM繫結的方式更新內容

wzwyc發表於2024-10-23

WebBrowser本身並沒有提供MVVM方式更新網頁內容的方式。
因為現在公司的專案基本上都使用MVVM的方式開發了。
所以想著,也可以簡單地封裝一個類來實現前後臺繫結的功能

實現程式碼:

public static class WebBrowserBehaviour
{
    public static readonly DependencyProperty HtmlTextProperty =
        DependencyProperty.RegisterAttached(
            "HtmlText",
            typeof(string),
            typeof(WebBrowserBehaviour),
            new UIPropertyMetadata(null, (s, e) =>
            {
                if (s is WebBrowser ue && e.NewValue != null)
                {
                    ue.NavigateToString(e.NewValue?.ToString());
                }
            })
        );

    public static string GetHtmlText(DependencyObject obj)
    {
        return (string)obj.GetValue(HtmlTextProperty);
    }

    public static void SetHtmlText(DependencyObject obj, string value)
    {
        obj.SetValue(HtmlTextProperty, value);
    }
}

前臺使用:

<WebBrowser cg2:WebBrowserBehaviour.HtmlText="{Binding HtmlText, Mode=OneWay}" />

相關文章