我有一个FreshMvvm Xam Forms项目,该项目有一个用于捕获用户名和密码的设置页面。如果用户名或密码更改,我想刷新主页中WebView的内容。
我可以使我用于设置页面模型中的 WebView 内容的缓存失效,这将随后触发刷新,但随后设置页面模型需要知道缓存。
对此推荐的方法是什么?
在页面之间发送数据的一种常用方法是使用 MessagingCenter
。 它允许一个页面订阅字符串值,并在另一个页面发送该字符串值时运行该方法。 以下是实现它的方法:
在您的主页中,您需要订阅MessagingCenter
MessagingCenter.Subscribe<mainPage>(this, "updated profile", (sender) =>
{
//Code to execute in main page when MessagingCenter triggered
});
字符串值"更新配置文件"是消息传递中心正在侦听的键。 然后,当您将以下代码放在"设置"页面中时,它将在mainPage
的MessagingCenter
中执行该代码:
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));
MessagingCenter
文件可在此处找到:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/messaging-center/