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

时间:2016-06-14 16:22:59

标签: c# xamarin xamarin.forms

考虑以下情况:

  1. 用户在某些页面上
  2. 点击按钮将他移至第2页(致电await Navigation.PushAsync(new SomePage());
  3. 完成某项操作后,他点击"确定"按钮
  4. 点击"确定"后,应用程序调用PopAsync移至第1页并向其发送一些数据(第2页上的活动结果)。
  5. 如何从第1页的第2页接收数据?

2 个答案:

答案 0 :(得分:12)

最好的方式(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();
    }
}

您可以通过here了解更多信息 - 非常好的文章

另一种选择是使用 MessagingCenter

答案 1 :(得分:4)

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

我的答案适用于ContentPage,而SushiHangover可以在任何地方使用。

我的回答是在执行ContentPage.OnDisappearing之前订阅第1页的PushAsync()

如果要更改的数据保存到第2页的数据库中,您只需使用第1页OnAppearing()事件就可以从数据库中获取新数据,从而获取新的数据。在第2页上更改OnAppearing()将在弹出第2页并且用户返回到第1页后执行。