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