gpt4 book ai didi

ios - Xamarin forms Binded Webview 在 Android 上显示,但在等待任务的 IOS 上不显示

转载 作者:行者123 更新时间:2023-11-28 20:59:32 27 4
gpt4 key购买 nike

我创建了一个新的 Xamarin Forms Prism 项目来复制我在实际应用中遇到的这个问题。我想转到我的数据/网络服务并为我的应用程序的首页获取公告。它只是一个 HTML 字符串,所以我使用的是 WebView,我的 MainPage.xaml 看起来像 .

<?xml version="1.0" encoding="utf-8" ?>

<StackLayout HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand">
<Button Text="Go to page 1" Command="{Binding NextPageCommand}"/>
<WebView x:Name="webView" WidthRequest="1000" HeightRequest="1000" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<WebView.Source>
<HtmlWebViewSource Html="{Binding Announcements}"/>
</WebView.Source>
</WebView>
</StackLayout>

还有我的 ViewModel

using Prism.Commands;
using Prism.Mvvm;
using Prism.Navigation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BlankApp1.ViewModels
{
public class MainPageViewModel : ViewModelBase,INavigatedAware
{
public MainPageViewModel(INavigationService navigationService)
: base (navigationService)
{
Title = "Main Page";
NextPageCommand = new DelegateCommand(NextPage);
}
public DelegateCommand NextPageCommand { get; }
private string _announcements;
public string Announcements
{
get { return _announcements; }
set { SetProperty(ref _announcements, value); }

}
private async void NextPage()
{
await NavigationService.NavigateAsync("Page1");

}
public async void OnNavigatedTo(NavigationParameters parameters)
{

if (Announcements == null)
{
Announcements = "<html><body>" + "Working Shows this HTML in the Webview" + "</body></html>";
}
else
{
Announcements = "<html><body>" + "Not Working, Didnt update with this new HTML" + "</body></html>";
}

}
public async void OnNavigatedFrom(NavigationParameters parameters)
{
//throw new NotImplementedException();
}
}

}

在 OnNavgatedTo 函数中,当您离开此页面然后返回时,它不会更新显示的 HTML。

如果有人知道为什么这可能在 Android 上运行良好但在 iOS 上运行良好,请告诉我。我已经看了 2 天了,但仍然无法像在 Android 上那样显示它

最佳答案

如果您想更改 WebView 的内容,请尝试绑定(bind)其 HtmlWebViewSource 而不是 Html

在您的 View 模型中创建您的 HtmlWebViewSource 属性:

private HtmlWebViewSource _webviewSource;
public HtmlWebViewSource WebviewSource
{
get { return _webviewSource; }
set
{
SetProperty(ref _webviewSource, value);
}
}

然后像这样绑定(bind)它:

<WebView x:Name="webView"  WidthRequest="1000" HeightRequest="1000" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Source="{Binding WebviewSource}">

当你想改变它时,试试这个:

if (WebviewSource == null)
{
WebviewSource = new HtmlWebViewSource { Html = "<html><body>" + "Working Shows this HTML in the Webview" + "</body></html>" };
}
else
{
WebviewSource = new HtmlWebViewSource { Html = "<html><body>" + "Not Working, Didnt update with this new HTML" + "</body></html>" };
}

关于ios - Xamarin forms Binded Webview 在 Android 上显示,但在等待任务的 IOS 上不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50157893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com