我有一个FreshMvvm Xam Forms项目,其中有一个用于捕获用户名和密码的“设置”页面。如果用户名或密码更改,我想刷新主页中WebView的内容。
我可以通过SettingsPageModel使用于WebView内容的缓存失效,随后触发刷新,但是SettingsPageModel需要知道缓存。
建议的方法是什么?
答案 0 :(得分:0)
在页面之间发送数据的一种常见方法是使用MessagingCenter
。它允许一个页面订阅字符串值,并在另一个页面发送该字符串值时运行方法。以下是如何实现它:
在您的主页中,您需要订阅MessagingCenter
MessagingCenter.Subscribe<mainPage>(this, "updated profile", (sender) =>
{
//Code to execute in main page when MessagingCenter triggered
});
字符串值“update profile”是MessagingCenter正在侦听的密钥。然后,当您将以下代码放入“设置”页面时,它将执行MessagingCenter
的{{1}}中的代码:
mainPage
注意:为了使其正常工作,我必须将主页的MessagingCenter.Send((MainPage) mainPage, "updatedProfile");
值发送到设置页面。为此,在我的设置页面构造函数中添加了Page
参数:
Page
然后当导航到public class SettingsPage : ContentPage {
private Page mainPage;
public SettingsPage(Page mainPage) {
this.mainPage = mainPage;
}
}
时,我发送了我的主页:
SettingsPage
await Navigation.PushAsync(new SettingsPage(this));
的文件可以在这里找到:
https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/messaging-center/