在xaml中将html字符串内容绑定到Webview
本文关键字:绑定 Webview 字符串 xaml 中将 html | 更新日期: 2023-09-27 17:51:05
我有一个webview在我的xaml看起来如下:
<WebView x:Name="WebView" />
并且,在我的代码后面,我有一个名为"htmlcontent"的变量,它包含html字符串数据,看起来像这样:
<html><body><b>Hi there</b></body></html>
我如何绑定这个html字符串并在XAML的webview组件中格式化显示它?
*编辑-顺便说一下,我正在做一个Windows 8 metro应用程序,所以不支持WebBrowser控件WebView中不存在HtmlString属性(只有Source属性是一个Uri)。但你能做的是为WebView定义一个新的HtmlString附加属性。只需创建以下类:
namespace YOURNAMESPACE
{
class MyProperties
{
// "HtmlString" attached property for a WebView
public static readonly DependencyProperty HtmlStringProperty =
DependencyProperty.RegisterAttached("HtmlString", typeof(string), typeof(MyProperties), new PropertyMetadata("", OnHtmlStringChanged));
// Getter and Setter
public static string GetHtmlString(DependencyObject obj) { return (string)obj.GetValue(HtmlStringProperty); }
public static void SetHtmlString(DependencyObject obj, string value) { obj.SetValue(HtmlStringProperty, value); }
// Handler for property changes in the DataContext : set the WebView
private static void OnHtmlStringChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
WebView wv = d as WebView;
if (wv != null)
{
wv.NavigateToString((string)e.NewValue);
}
}
}
}
假设你的DataContext字段叫做CurrentHtmlString,那么你可以在你的XAML文件中使用这个新的WebView的HtmlString属性来绑定它,语法如下:
<WebView local:MyProperties.HtmlString="{Binding CurrentHtmlString}"></WebView>
通常在XAML文件的顶部已经有以下行:
xmlns:local="using:MYNAMESPACE"
你可以在Rob Caplan这里找到更多的解释:http://blogs.msdn.com/b/wsdevsol/archive/2013/09/26/binding-html-to-a-webview-with-attached-properties.aspx