**我的问题:**我的父页面(AdminPanel.xaml)包含一个函数:更新所有材料列表()
它是导航堆栈上的上一页。
现在在AddUser.xaml页面上,我尝试通过调用updateAllMaterialList()返回到上一页,如下所示:
private async void GoToBack(object sender, EventArgs e)
{
await Navigation.PopAsync();
NavigationPage navPage = (NavigationPage)App.Current.MainPage;
Page page = navPage.Navigation.NavigationStack[navPage.Navigation.NavigationStack.Count - 1];
((AdminPanel)page).updateAllMaterialList();
}
但它不起作用
3条答案
按热度按时间xkrw2x1b1#
首先,我想指出的是,有很好的理由不保持您的业务逻辑在您的网页。
我建议你检查CommunityToolkit.MVVM/MAUI。然后添加一些服务,来为你做这项工作。或者使用EventToCommandBehavior来绑定你的页面事件。(出现,加载等)或者使用Messenger来发送/接收解耦段之间的数据。
你试图处理逻辑和导航的方式会带来很多问题。一个页面的导航应该与另一个页面的业务逻辑无关。
rt4zxlrg2#
正如Jason所说,您可以在
AdminPanel.xaml.cs
中生成OnAppearing
方法覆盖,并在OnAppearing
中添加updateAllMaterialList()函数,这样,每当AddUser.xaml页面导航到AdminPanel.xaml页面时,它就会自动调用updateAllMaterialList(),OnAppearing
意味着当指定页面出现时,它就会被调用。wj8zmpe13#
是的,正如他们所说,你可以使用OnAppearing,一切都很好。但我也发现了这样的方法: