使用 MasterDetailPage 在 Prism 中进行深度导航会导致双重调用视图模型
Deep Navigation in Prism with MasterDetailPage causes double calling viewmodel
我有带汉堡按钮的 MasterDetailPage。为此,我制作了这个导航路径:
var navigationStack = new Uri("https://Necessary/" + $"{nameof(ProfilePage)}/{nameof(NavigationBarPage)}/{nameof(DetailPage)}", UriKind.Absolute);
await _navigationService.NavigateAsync(navigationStack, parameters, animated: false);
ProfilePage - MasterDetailPage、NavigationBarPage - NavigationPage
但我意识到,由于它,viewmodels 调用了两次,一次用于 ProfilePage - 这导致调用 DetailPageViewModel 和 Master.. 以及 Detail 的所有子项,因为它是选项卡式页面。然后当路径到达 DetailPage 时,它会再次调用它的子项。
这对我来说是不好的行为。我做错了什么吗?以及如何在我的页面外观相同的情况下避免它?
如果它是{nameof(ProfilePage)}/{nameof(NavigationBarPage)},它看起来不会像我想要的那样,因为工具栏会隐藏 MasterPage 的一部分。
根据您的评论,我只能假设当您定义 MasterDetailPage 时,您也在定义 DetailPage。不要这样做。只需设置您的 MasterDetailPage,设置 Master 属性,不要设置 Detail 属性。当您使用深度 link 路径导航时,将自动设置详细信息 属性。
我有带汉堡按钮的 MasterDetailPage。为此,我制作了这个导航路径:
var navigationStack = new Uri("https://Necessary/" + $"{nameof(ProfilePage)}/{nameof(NavigationBarPage)}/{nameof(DetailPage)}", UriKind.Absolute);
await _navigationService.NavigateAsync(navigationStack, parameters, animated: false);
ProfilePage - MasterDetailPage、NavigationBarPage - NavigationPage
但我意识到,由于它,viewmodels 调用了两次,一次用于 ProfilePage - 这导致调用 DetailPageViewModel 和 Master.. 以及 Detail 的所有子项,因为它是选项卡式页面。然后当路径到达 DetailPage 时,它会再次调用它的子项。
这对我来说是不好的行为。我做错了什么吗?以及如何在我的页面外观相同的情况下避免它?
如果它是{nameof(ProfilePage)}/{nameof(NavigationBarPage)},它看起来不会像我想要的那样,因为工具栏会隐藏 MasterPage 的一部分。
根据您的评论,我只能假设当您定义 MasterDetailPage 时,您也在定义 DetailPage。不要这样做。只需设置您的 MasterDetailPage,设置 Master 属性,不要设置 Detail 属性。当您使用深度 link 路径导航时,将自动设置详细信息 属性。