如何使用ViewModelCloser来关闭ViewModel的视图

本文关键字:ViewModel 视图 何使用 ViewModelCloser | 更新日期: 2023-09-27 18:08:37

在MvvmCross v3, CustomerManagement示例中,方法void RequestClose(IMvxViewModel viewModel)关闭top View。如何关闭ViewModelView ?

如何使用ViewModelCloser来关闭ViewModel的视图

我不会使用ViewModelCloser方法-尽管如果你想的话,它可以扩展。

MvvmCross v3删除了之前的CloseViewModel方法-因为它不能在所有的平台和所有的表示样式上工作-在所有的导航控制器,分屏视图,选项卡,弹出框,对话框等。

为了取代它,v3引入了一个新的ViewModel调用:
    protected bool ChangePresentation(MvxPresentationHint hint)

这在ui中与IMvxViewPresenter方法匹配:

    void ChangePresentation(MvxPresentationHint hint);

要使用它,您需要:

  1. 创建一个新的提示类-例如public class CustomPresentationHint : MvxPresentationHint { /* ... */ }

  2. 在每个UI项目中,提供一个自定义演示器(通常通过在Setup.cs类中重写CreateViewPresenter()) -并在该自定义演示器中处理ChangePresentationHint调用:

          public void ChangePresentation(MvxPresentationHint hint)
          {
              if (hint is CustomPresentationHint)
              {
                   // your custom actions here
                   // - which may involve interacting with the RootFrame, with a NavigationController, with the AndroidFragment manager, etc
              }
          }
    
  3. 在你的视图模型,你可以发送一个CustomPresentationHint当你想。

我意识到这比vNext需要"更多的工作",但希望这是一个更灵活,更强大的方法。