MvvmCross CloseTo 视图模型

MvvmCross CloseTo ViewModel

在 MvvmCross 中有没有办法让导航服务关闭特定的 viewModel?

例如,假设我有 3 个视图模型

A B C

我已经从 A 导航到 B 再到 C。

A -> B -> C

在 C 视图中,我按下了完成按钮并想返回视图 A。

有没有办法在 C viewModel 中做这样的事情?

_navigationService.Close<A>(this);

如果你在 Xamarin.Forms(如果不让我知道,我会更新答案,因为它不是那么简单),在 IMvxNavigationService 你有 ChangePresentation(...) 方法它使用提示对象告诉框架你想做什么。

 Task<bool> ChangePresentation(MvxPresentationHint hint, CancellationToken cancellationToken = default(CancellationToken));

Here 您有框架提供的不同 out-of-the-box 提示。

要解决您的问题,您只需使用 MvxPopPresentationHint:

_navigationService.ChangePresentation(new MvxPopPresentationHint(typeof(A)));

或者如果 A 是您的根 ViewModel,您可以只使用 MvxPopToRootPresentationHint:

_navigationService.ChangePresentation(new MvxPopToRootPresentationHint());