使用MasterDetailPage在Prism中进行深度导航会导致双重调用视图模型

时间:2016-10-17 12:15:03

标签: c# xamarin navigation xamarin.forms prism

我有带汉堡按钮的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,因为它是Tabbed Page。然后当路径来到DetailPage时,它会再次调用它的子项 这对我来说是不好的行为。我做错了吗?我怎么能用相同的页面来避免它呢?

如果它是{nameof(ProfilePage)} / {nameof(NavigationBarPage)},它将看起来不像我想要的那样,因为工具栏将隐藏MasterPage的一部分。

1 个答案:

答案 0 :(得分:0)

根据您的评论,我只能假设您在定义MasterDetailPage时也定义了DetailPage。不要这样做。只需拥有MasterDetailPage,并设置Master属性,不要设置Detail属性。使用深层链接路径导航时,将自动设置Detail属性。