C# 如何使用PopAsync将数据传递到上一页?
考虑以下场景:C# 如何使用PopAsync将数据传递到上一页?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,考虑以下场景: 用户位于第1页的某个位置 他单击按钮将他移动到第2页(调用等待导航.PushAsync(newsomePage());) 完成某些操作后,他单击“确定”按钮 单击“确定”后,应用程序调用PopAsync移动到第1页,并向该页发送一些数据(第2页上的活动结果) 如何从第1页的第2页接收数据?最好的方法(IMO)是通过引发事件来处理来自原始页面的pop。大概是这样的: public class LoginPage : ContentPage { public event Ev
等待导航.PushAsync(newsomePage());
)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,您可以在同一页面上使用我的答案或Sushingover的答案 我的答案将在
ContentPage
中起作用,寿司宿醉将在任何地方起作用
我的答案是在执行PushAsync()
之前,先订阅第1页的ContentPage.OnDisappearing
如果正在更改的数据保存到第2页的数据库中,您可以使用第1页的
OnAppearing()
事件始终从数据库中提取新数据,这将提取在第2页更改的新数据<代码>OnAppearing()将在弹出第2页且用户返回到第1页后执行。是否使用ViewModels?以何种方式?为什么?如果你使用的是与页面关联的ViewModels,那么在页面之间共享数据就很容易了。看起来很有趣。如果我不在从“应用程序”扩展而来的类中,是否可以这样做?我的意思是:我的第1页(我想从那里启动第2页)是ContentPage,其中没有类似MainPage变量的内容。是的,这是可能的。