XAML WebView 绑定到 HTML 源无效

XAML WebView binding to HTML source not working

我定义了一个 XAML 页面布局,其中包含从 HTML 字符串填充的 WebView

<WebView HorizontalOptions="Fill" VerticalOptions="FillAndExpand">
    <WebView.Source>
        <HtmlWebViewSource Html="{Binding Flag.Description}" />
<!--    <HtmlWebViewSource Html="&lt;html>&lt;body>&lt;p>The HTML string.&lt;/p>&lt;/body>&lt;/html>" />-->
    </WebView.Source>
</WebView>

当我将字符串硬编码到 XAML 中时,它会正确显示,但不会绑定到 Flag.Description 字符串。 XAML 包含几个正确绑定的标签,但我找不到 WebView 源未正确绑定的任何原因。

似乎 Binding Html 属性 for HtmlWebViewSource 开箱即用。我认为 IValueConverter 可以完成这项工作。请看看这个answer是怎么做的。我觉得应该够了

我无法让绑定在 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。 定义 HeightRequest 和 WidthRequest

<WebView Source="{Binding HtmlSource}" HeightRequest="300" WidthRequest="250" />

2。 定义 Horizo​​ntalOptions 和 VerticalOptions

<WebView x:Name="WebViewTermsOfService" Source="{Binding HtmlSource}" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />

但是,当我将 CenterAndExpand 指定为值时,HTML 没有呈现

Flag 或 Flag.Description 是否会 return 对 WebView 无效?我遇到了同样的问题,事实证明在我用正确的内容初始化它之前,我的源的默认值是空的。 WebView 基本上会崩溃。当我将 null 更改为 String.Empty 时,它会起作用。

public HtmlWebViewSource Description { get { var webView = "html content";return
 new HtmlWebViewSource { Html = webView };} }
<WebView
  HorizontalOptions="Fill"
  VerticalOptions="FillAndExpand"
  Source="{Binding Description}" />