1

我的应用程序(使用 MvvmCross 编写并考虑到 MVVM 模式)需要显示弹出窗口,用户可以在其中选择确认某些选项。所以基本上它是一个经典的模态对话框,但由于应用程序的视图模型是在可移植类库中实现的,它需要在广义上处理模态——一些平台根本没有与模态对话框完全匹配。

有几个线程讨论 MVVM 中的对话框(在 WPF MVVM 中打开对话框WPF MVVM 对话框示例)。按照他们的建议,我可能可以通过引入 DialogService 并为每个平台实现它来解决这个问题。但是我会像其他服务一样处理对话框——存储服务、地图服务等。但是对话框是表示概念的一部分,所以我想知道它是否可以更像一个视图,而不是调用一个实例一个不起眼的 IDialogService 我可以使用我选择的 MVVM 框架(在我的例子中为 MvvmCross)导航到它。

我检查了 MvvmCross 实现和示例,但几乎没有发现与对话框相关的东西。

4

1 回答 1

2

在 MvvmCross 中,presenter负责在使用ShowViewModel.

此演示者是一个视图/UI 级别的对象 - 最终是 UI 的工作来决定是否应将视图显示为页面、控件、选项卡、拆分视图、对话框等。

v3 确实引入了一个演示提示,ViewModel 可以帮助建议应如何显示视图 - 但由每个平台上的演示者决定如何(如果)使用此提示。


或者,可以使用 MvxMessenger 消息从 ViewModel 到 View 轻松显示 Dialogs/flyouts/etc,并在后面添加一点代码。


对于“模态”,还请考虑 Greg 关于“返回结果”的帖子 - 参见http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/

于 2013-04-21T09:37:03.257 回答