xamarin - 为什么 Xamarin Forms Webview 绑定不会在 iOS 上刷新?
问题描述
我正在使用 WebView 并构建自己的 html。我想将 webview 绑定到表单上其他地方的更改。这是我的xml:
<WebView HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
Margin="0">
<WebView.Source>
<HtmlWebViewSource x:Name="WebViewSoruce1" Html="{Binding Description}"/>
</WebView.Source>
</WebView>
这是我的描述模型代码:
public string Description
{
get {
return _description;
}
set
{
_description = value;
RaisePropertyChanged();
}
}
这在 Android 上运行良好,但不适用于 iOS。任何建议将不胜感激。
解决方案
所以如果其他人遇到这个问题。这就是最终在 iOS 和 Android 上对我有用的方法。
我必须作为 WebViewSource 绑定到它的 Source 属性而不是 HTML。这是我的 XAML:
<WebView HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
Margin="0" Source="{Binding WebViewSource}"/>
在我的视图模型中,我有两个属性。一个绑定 HTML 更改,我将其命名为 Description。另一个是绑定到 WebViewSource。
下面是代码隐藏:
public HtmlWebViewSource WebViewSource
{
get
{
return new HtmlWebViewSource { Html = _description };
}
}
public string Description
{
get {
return _description;
}
set
{
_description = value;
RaisePropertyChanged();
RaisePropertyChanged("WebViewSource");
}
}
这对我有用。
推荐阅读
- c++ - 为什么使用“++value”会导致 -842150449?
- asp.net-core - 在 .ThenInclude 中为模型添加过滤器到剃刀视图
- android - SocketServer.accept() 使应用程序崩溃或有时无法正常工作
- bash - 检查字符串日期(mm/dd/yyyy)是否是周末 - bash
- javascript - 如何使用 POST 请求实现 http-equiv/refresh?
- javascript - 使用 Node JS 从 MySQL 数据库中删除一行
- node.js - Nodejs从函数返回结果是空的承诺
- php - 如何为某些 WordPress 用户角色隐藏 Adsense Java 脚本?
- python - 如何删除 NDB 模型中包含特定属性的实体?
- laravel - Nginx 多位置 laravel 项目