0

我有一个FreshMvvm Xam Forms 项目,它有一个用于捕获用户名和密码的设置页面。如果用户名或密码更改,我想在主页中刷新 WebView 的内容。

我可以使 SettingsPageModel 中用于 WebView 内容的缓存失效,这随后会触发刷新,但是 SettingsPageModel 需要知道缓存。

推荐的方法是什么?

4

1 回答 1

0

在页面之间发送数据的一种常见方法是使用MessagingCenter. 它允许一个页面订阅一个字符串值,并在另一个页面发送该字符串值时运行一个方法。以下是如何实现它:

在您的主页中,您需要订阅MessagingCenter

MessagingCenter.Subscribe<mainPage>(this, "updated profile", (sender) =>
{
    //Code to execute in main page when MessagingCenter triggered
});

字符串值“更新配置文件”是 MessagingCenter 正在侦听的键。然后,当您将以下代码放入“设置”页面时,它将执行以下代码MessagingCentermainPage

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/

于 2017-03-19T15:53:24.117 回答