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

Pio*_*rek 13 c# xamarin xamarin.forms

请考虑以下情形:

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

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

Dak*_*ada 13

最好的方法(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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

另一种选择是使用MessagingCenter


hva*_*an3 6

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

我的答案将在 a 中起作用,ContentPage而 SushiHangover 将在任何地方起作用。

我的回答涉及ContentPage.OnDisappearing在执行您的PushAsync().

如果正在更改的数据保存到第 2 页中的数据库中,您可以只使用第 1 页的OnAppearing()事件始终从数据库中拉取新数据,这将拉入第 2 页上更改的新数据。OnAppearing()将在第 2 页之后执行弹出,用户返回到第 1 页。