在MvvmCross v3,CustomerManagement示例中,方法void RequestClose(IMvxViewModel viewModel)
关闭了顶部View
。您如何关闭View
的{{1}}呢?
答案 0 :(得分:4)
我不会使用ViewModelCloser方法 - 尽管可以扩展它。
MvvmCross v3删除了之前的CloseViewModel
方法 - 因为它并非适用于所有平台和所有演示样式 - 跨所有导航控制器,拆分视图,制表符,弹出按钮,弹出窗口,对话框等。< / p>
要替换它,v3引入了一个新的ViewModel调用:
protected bool ChangePresentation(MvxPresentationHint hint)
这在UI中与IMvxViewPresenter方法匹配:
void ChangePresentation(MvxPresentationHint hint);
要使用此功能,您需要:
创建一个新的Hint类 - 例如public class CustomPresentationHint : MvxPresentationHint { /* ... */ }
在每个UI项目中,提供一个自定义演示者(通常通过覆盖CreateViewPresenter()
类中的Setup.cs
) - 并在该自定义演示者处理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要求的“更多工作”,但希望它是一种更灵活,更强大的方法。