【发布时间】:2016-10-17 12:15:03
【问题描述】:
我有带有汉堡按钮的 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 的一部分。
【问题讨论】:
-
您需要澄清问题。其实,究竟是什么问题? “导致调用 DetailPageViewModel”或“它调用它的子级”是什么?你能解释清楚一点吗?
-
看看我的导航路径。它有 ProfilePage,即 MasterDetailPage,其详细信息是 DetailPage。因此,因为它首先运行,所以 DetailPage 及其视图模型在此处运行,然后,在路径的末尾有 DetailPage,该视图模型在 ProfilePage 中运行,又运行了一次。但我不想有两次。我知道这是正确的行为,但我怎样才能避免它但显示相同的结果?我没有找到其他解决方案。
-
“运行”是什么意思。每个页面只创建一次虚拟机。
-
我的意思是它创建和执行代码,就是在其中。 VM 在页面创建时创建,所以因为在一个导航路径中我有两个相同的页面(ProfilePage 的详细页面 - 即 DetailPage 和 DetailPage 本身),所以它创建了两次。
标签: c# xamarin navigation xamarin.forms prism