在 MvvmCross v3、CustomerManagement 示例中,该方法void RequestClose(IMvxViewModel viewModel)
关闭顶部View
。你如何关闭View
of a ViewModel
反而?
我不会使用 ViewModelCloser 方法 - 尽管如果您愿意的话可以扩展它。
MvvmCross v3 删除了之前的CloseViewModel
方法 - 因为它并不能真正跨所有平台和所有演示样式 - 跨所有导航控制器、分割视图、选项卡、弹出窗口、弹出窗口、对话框等。
为了取代它,v3 引入了一个新的 ViewModel 调用:
protected bool ChangePresentation(MvxPresentationHint hint)
这在 UI 中与 IMvxViewPresenter 方法相匹配:
void ChangePresentation(MvxPresentationHint hint);
要使用它,您需要:
创建一个新的提示类 - 例如public class CustomPresentationHint : MvxPresentationHint { /* ... */ }
-
在每个 UI 项目中,提供一个自定义演示者(通常通过覆盖CreateViewPresenter()
在你的Setup.cs
类) - 并在该自定义演示者中处理ChangePresentationHint
call:
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 所需的工作量“更多”,但希望这是一种更灵活、更强大的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)