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="<html><body><p>The HTML string.</p></body></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。
定义 HorizontalOptions 和 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}" />
我定义了一个 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 源未正确绑定的任何原因。
似乎 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。 定义 HorizontalOptions 和 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}" />