我定义了一个XAML页面布局,其中包含从HTML字符串填充的WebView
:
<WebView HorizontalOptions="Fill" VerticalOptions="FillAndExpand">
<WebView.Source>
<HtmlWebViewSource Html="{Binding Flag.Description}" />
<!-- <HtmlWebViewSource Html="<html><body><p>The HTML string.</p></body></html>" />-->
</WebView.Source>
</WebView>
当我将字符串硬编码到XAML中时,它会正确显示,但它不会绑定到Flag.Description
字符串。 XAML包含几个正确绑定的标签,但我找不到WebView源无法正确绑定的任何原因。
答案 0 :(得分:7)
我无法让绑定在XAML中工作,但是有一个基于代码的解决方案。我使用FreshMvvm所以在页面模型中(不是XAML页面的代码隐藏)我创建了一个引用HTML字符串的新属性:
public HtmlWebViewSource WebViewSource
{
get {
return new HtmlWebViewSource { Html = Flag.Description };
}
}
XAML页面中的WebView
元素变为:
<WebView
HorizontalOptions="Fill"
VerticalOptions="FillAndExpand"
Source="{Binding WebViewSource}" />
答案 1 :(得分:2)
接受的答案对我有用,但我会补充一点,它只适用于指定高度和宽度。
有一些组合可行:
1。 定义HeightRequest和WidthRequest
<WebView Source="{Binding HtmlSource}" HeightRequest="300" WidthRequest="250" />
2。 定义HorizontalOptions和VerticalOptions
<WebView x:Name="WebViewTermsOfService" Source="{Binding HtmlSource}" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
但是,当我将CenterAndExpand
指定为值时,HTML无法呈现
答案 2 :(得分:0)
似乎Html
的Binding HtmlWebViewSource
属性似乎无法开箱即用。我认为IValueConverter
会完成这项工作。请查看此answer中的完成情况。我认为这应该足够了
答案 3 :(得分:0)
Flag或Flag.Description会不会向WebView返回null?我遇到了同样的问题,事实证明,在使用适当的内容初始化之前,我的源的默认值为null。 WebView本质上会崩溃。当我将null更改为String.Empty时,它将起作用。
答案 4 :(得分:0)
public HtmlWebViewSource Description { get { var webView = "html content";return
new HtmlWebViewSource { Html = webView };} }
<WebView
HorizontalOptions="Fill"
VerticalOptions="FillAndExpand"
Source="{Binding Description}" />