如何使用PopAsync将数据传递到上一页? [英] How to pass data to the previous page using PopAsync?

查看:148
本文介绍了如何使用PopAsync将数据传递到上一页?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请考虑以下情形:

  1. 用户在第1页上
  2. 他单击按钮将其移至第2页(称为await Navigation.PushAsync(new SomePage());)
  3. 完成某些操作后,他单击确定"按钮
  4. 单击确定"后,应用程序将调用PopAsync移至第1页并向其中发送一些数据(第2页上的活动结果).
  1. User is on some Page 1
  2. He clicks button that moves him to Page 2 (calling await Navigation.PushAsync(new SomePage()); )
  3. After finishing certain action, he clicks "OK" button
  4. After clicking "OK", app calls PopAsync to move to Page 1 and sends there some data (result of activity on Page 2).

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

How can I receive data from Page 2 in Page 1?

推荐答案

最好的方法(IMO)是通过引发事件来处理原始页面的弹出消息.像这样:

The best way (IMO) would be to handle the pop from the originating page by raising an event. Something like this:

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();
    }
}

您可以通过此处了解更多信息–确实不错文章

You can read more about it over here -- Really good article

另一种选择是使用 MessagingCenter

这篇关于如何使用PopAsync将数据传递到上一页?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆