我的MvvmCross应用使用自定义演示器,在Ipad上运行时创建SplitView。 master和detail都包含导航控制器。这工作正常,除了我不知道如何提示我希望下一个视图显示的系统。 我有几个视图有时应该在详细视图中显示,有时在主视图中显示。如果在iPhone上运行,它们将显示在单个导航控制器中。
所以在ViewModel中我想暗示将下一个视图放在哪里。像
这样的东西ShowViewModel(paramObject,ShowInMaster);
如果在iPhone上运行,将忽略ShowInMaster。
这是可能的,还是我可能做错了?
答案 0 :(得分:3)
您可以在大多数presentationBundle
覆盖中使用可选的ShowViewModel
参数 - 请参阅https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross/ViewModels/MvxNavigatingObject.cs#L39
您可以简单地从Dictionary<string,string>()
创建一个包 - 例如你可以使用new MvxBundle(new Dictionary<string,string>() { { "ShowSplit":"true" } })
使用时,此演示文稿包将放入MvxViewModelRequest
成员的public IDictionary<string, string> PresentationValues { get; set; }
- 请参阅https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross/ViewModels/MvxViewModelRequest.cs#L33
然后,请求将传递给您的UI演示者(也称为其他框架中的“导航服务”) - 然后,每个平台上的演示者中的自定义代码可以决定如何处理这些“演示”提示 - 例如它可以覆盖public override void Show(MvxViewModelRequest request)
以检查表示提示内容,然后执行一些自定义拆分视图显示(有关默认行为,请参阅https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Touch/Views/Presenters/MvxTouchViewPresenter.cs#L45)
如果有帮助,一个简单的拆分视图显示(使用固定逻辑而不是表示提示)位于http://mvvmcross.blogspot.com的N = 24