在 MvvmCross v3, CustomerManagement 示例中,该方法void RequestClose(IMvxViewModel viewModel)
关闭了顶部View
。你如何关闭View
aViewModel
而不是?
问问题
3059 次
1 回答
5
我不会使用那个 ViewModelCloser 方法——尽管如果你愿意,它可以被扩展。
MvvmCross v3 删除了以前的CloseViewModel
方法——因为它并没有真正适用于所有平台和所有演示样式——适用于所有导航控制器、拆分视图、选项卡、弹出窗口、弹出窗口、对话框等。
为了替换它,v3 引入了一个新的 ViewModel 调用:
protected bool ChangePresentation(MvxPresentationHint hint)
这在 UI 中与 IMvxViewPresenter 方法匹配:
void ChangePresentation(MvxPresentationHint hint);
要使用它,您需要:
创建一个新的提示类 - 例如
public class CustomPresentationHint : MvxPresentationHint { /* ... */ }
CreateViewPresenter()
在每个 UI 项目中,提供一个自定义演示者(通常通过在您的类中覆盖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 所需的“更多工作”,但希望它是一种更灵活、更强大的方法。
于 2013-04-10T07:38:58.837 回答