如何使用PopAsync将数据传递到上一页?

请考虑以下情形:

  1. 用户在某些页面上
  2. 他点击按钮将他移动到第2页(调用await Navigation.PushAsync(new SomePage());
  3. 完成某些操作后,他点击“确定”按钮
  4. 单击“确定”后,应用程序调用PopAsync移动到第1页并向其发送一些数据(第2页上的活动结果)。

如何从第1页的第2页接收数据?

最好的方法(IMO)是通过引发事件来处理来自原始页面的弹出窗口。 像这样的东西:

 public class LoginPage : ContentPage { public event EventHandler LoginSucceeded; public event EventHandler LoginFailed; private void OnLoginSucceeded() { if (LoginSucceeded != null) { LoginSucceeded(this, EventArgs.Empty); } } private void OnLoginFailed() { if (LoginFailed != null) { LoginFailed(this, EventArgs.Empty); } } } 

从app.cs

 public class App : Application { public App() { var loginPage = new LoginPage(); loginPage.LoginSucceeded += HandleLoginSucceeded; MainPage = loginPage; } private void HandleLoginSucceeded(object sender, EventArgs e) { MainPage = new MainPage(); } } 

你可以在这里阅读更多相关内容 – 非常好的文章

另一种选择是使用MessagingCenter

您可以在此处使用我的答案或在同一页面上使用SushiHangover的答案。

我的回答将在ContentPage工作,而SushiHangover将在任何地方工作。

我的回答涉及在执行PushAsync()之前订阅ContentPage.OnDisappearing从第1页出现。

如果要更改的数据保存到第2页的数据库中,您可以使用Page 1的OnAppearing()事件始终从数据库中提取新内容,这将提取第2页上更改的新数据OnAppearing()将在弹出第2页并且用户返回到第1页后执行。