在MvvmCross中,有没有一种方法可以要求导航服务关闭特定的viewModel?
例如,假设我有3个视图模型
A B C
我已经从A导航到B到C。
A -> B -> C
在C视图中,我按下“完成”按钮,并想返回到视图A。
有没有办法在C viewModel中做类似的事情?
_navigationService.Close<A>(this);
答案 0 :(得分:0)
如果您使用的是Xamarin.Forms
(如果不告诉我,我会更新答案,因为它并不那么简单),则在IMvxNavigationService
中,您可以使用ChangePresentation(...)
方法提示对象,告诉框架您要做什么。
Task<bool> ChangePresentation(MvxPresentationHint hint, CancellationToken cancellationToken = default(CancellationToken));
Here,您将获得框架提供的不同的即用型提示。
要解决您的问题,您可以使用MvxPopPresentationHint
:
_navigationService.ChangePresentation(new MvxPopPresentationHint(typeof(A)));
或者如果A
是您的根ViewModel,则可以只使用MvxPopToRootPresentationHint
:
_navigationService.ChangePresentation(new MvxPopToRootPresentationHint());
HIH