如何使用ViewModelCloser来关闭ViewModel的视图
本文关键字:ViewModel 视图 何使用 ViewModelCloser | 更新日期: 2023-09-27 18:08:37
在MvvmCross v3, CustomerManagement示例中,方法void RequestClose(IMvxViewModel viewModel)
关闭top View
。如何关闭ViewModel
的View
?
我不会使用ViewModelCloser方法-尽管如果你想的话,它可以扩展。
MvvmCross v3删除了之前的CloseViewModel
方法-因为它不能在所有的平台和所有的表示样式上工作-在所有的导航控制器,分屏视图,选项卡,弹出框,对话框等。
protected bool ChangePresentation(MvxPresentationHint hint)
这在ui中与IMvxViewPresenter方法匹配:
void ChangePresentation(MvxPresentationHint hint);
要使用它,您需要:
创建一个新的提示类-例如
public class CustomPresentationHint : MvxPresentationHint { /* ... */ }
在每个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 } }
在你的视图模型,你可以发送一个
CustomPresentationHint
当你想。
我意识到这比vNext需要"更多的工作",但希望这是一个更灵活,更强大的方法。