提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
所以,我有Page1
,我的用户已经填写了一些输入字段,并且有一个按钮可以打开一个新 Page (我们称之为Page2
)。
这是我在Page2
上使用的代码。
Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new Page2()));
这是我以前在Page1
上回来的代码。
private async void GoBackButton_Clicked(object sender, EventArgs e)
{
await Application.Current.MainPage.Navigation.PopModalAsync();
}
现在,我想,不知何故,当用户完成他在Page2
上的内容时,他按下名为GoBack
的按钮,然后他回到Page1
上,并且Page1
的 ViewModel 的OnApearing
方法没有被执行。 这是可行的吗?
不确定是否重要,但我在 Windows10 上使用 VS22。
这是我在一些应用程序中使用的。 逻辑是:Page1 在第一次加载时加载数据,然后仅在请求重新加载时重新加载数据。
这是一个例子:
Page1.xaml.cs
public partial class Page1 : ContentPage
{
private bool _isFirstLoad = true;
private bool _isReloadRequested;
public Page1()
{
InitializeComponent();
}
private async Task OpenPage2Async()
{
//navigate to Page2
await Application.Current.MainPage.Navigation.PushModalAsync(new NavigationPage(new Page2(() => _isReloadRequested = true)));
}
protected override void OnAppearing()
{
if (_isFirstLoad)
{
_isFirstLoad = false;
ReloadData();
return;
}
if (_isReloadRequested)
{
ReloadData();
_isReloadRequested = false;
}
}
private void ReloadData()
{
//reload data...
}
}
Page2.xaml.cs
public partial class Page2 : ContentPage
{
private readonly Action _requestReload;
public Page2(Action requestReload)
{
InitializeComponent();
_requestReload = requestReload;
}
private async Task GoBackAsync()
{
//invoke callback to set Page1's _isReloadRequested to true
_requestReload?.Invoke();
//go back to Page1
await Application.Current.MainPage.Navigation.PopModalAsync();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.