所以,我已经用棱镜开发了 2 个月的应用程序,现在我意识到当我从 MasterDetailPage 中选择一个项目时,OnNavigatedTo 方法被调用了两次。
我不知道为什么会发生这种情况,我确定我遗漏了一些东西,但我大约需要两天时间来解决它。
我会在这里放一些代码,如果你们需要更多信息,我可以发布更详细的信息。
观察:当我在页面“A”中并在主从项目列表中选择页面“A”时,OnNavigatedTo 仅被调用一次,但是当我在页面“B”中并选择页面“ A", OnNavigatedTo 被调用两次。
从现在开始,谢谢你们,并为无知感到抱歉。
MasterDetailPage MVVM:
public class PrincipalMasterDetailPageViewModel : ViewModelBase {
public ObservableCollection<PrincipalMasterPageItem> MenuItems { get; set; }
public PrincipalMasterDetailPageViewModel(INavigationService navigationService) : base(navigationService)
{
MenuItems = new ObservableCollection<PrincipalMasterPageItem>();
}
public async override void OnNavigatedTo(NavigationParameters parameters) {
base.OnNavigatedTo(parameters);
.. Here I'm calling an API, thats why I have the async
}
}
自定义导航页面 MVVM:
public class PrincipalNavigationPageViewModel : ViewModelBase {
public PrincipalNavigationPageViewModel(INavigationService navigationService) : base(navigationService) {
}
}
当我在 masterdetailpage 项目列表中选择一个项目时,我实际显示的页面:
public class NewPageTestViewModel : ViewModelBase
{
public NewPageTestViewModel(INavigationService navigationService) : base(navigationService)
{
}
public override void OnNavigatedTo(NavigationParameters parameters)
{
base.OnNavigatedTo(parameters);
Debug.WriteLine("Calling twice HERE!");
}
}
这三个例子的RegisterTypes:
containerRegistry.RegisterForNavigation<PrincipalMasterDetailPage>();
containerRegistry.RegisterForNavigation<PrincipalNavigationPage>();
containerRegistry.RegisterForNavigation<NewPageTest>();
如何从 PrincipalMasterDetailPageViewModel 调用其他页面:
NavigationService.NavigateAsync(string.Format("PrincipalNavigationPage/{0}", item.TargetPageName));
至尊宝的传说
相关分类