4

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

<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 源未正确绑定的任何原因。

4

5 回答 5

9

我无法让绑定在 XAML 中工作,但有一个基于代码的解决方案。我使用的是FreshMvvm,因此在页面模型(不是 XAML 页面的代码隐藏)中,我创建了一个引用 HTML 字符串的新属性:

public HtmlWebViewSource WebViewSource
{
    get { 
        return new HtmlWebViewSource { Html = Flag.Description }; 
    }
}

WebViewXAML 页面中的元素变为:

<WebView
    HorizontalOptions="Fill"
    VerticalOptions="FillAndExpand"
    Source="{Binding WebViewSource}" />
于 2016-04-07T21:13:12.563 回答
3

接受的答案对我有用,但我要补充一点,它仅在您指定高度和宽度时才有效。

有一些组合有效:

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 没有呈现

于 2017-03-21T15:51:26.537 回答
0

似乎 BindingHtml属性 for HtmlWebViewSourcejust 不会开箱即用。我认为aIValueConverter会完成这项工作。请看看它是如何在这个答案中完成的。我认为这应该足够了

于 2016-04-07T05:15:02.730 回答
0

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

于 2017-12-03T17:01:24.310 回答
0
public HtmlWebViewSource Description { get { var webView = "html content";return
 new HtmlWebViewSource { Html = webView };} }
<WebView
  HorizontalOptions="Fill"
  VerticalOptions="FillAndExpand"
  Source="{Binding Description}" />
于 2020-02-19T11:29:33.857 回答