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