如何使用SplitView提示在MvvmCross中显示视图的位置

时间:2014-03-04 08:44:23

标签: ios ipad xamarin.ios mvvmcross uisplitview

我的MvvmCross应用使用自定义演示器,在Ipad上运行时创建SplitView。 master和detail都包含导航控制器。这工作正常,除了我不知道如何提示我希望下一个视图显示的系统。 我有几个视图有时应该在详细视图中显示,有时在主视图中显示。如果在iPhone上运行,它们将显示在单个导航控制器中。

所以在ViewModel中我想暗示将下一个视图放在哪里。像

这样的东西

ShowViewModel(paramObject,ShowInMaster);

如果在iPhone上运行,将忽略ShowInMaster。

这是可能的,还是我可能做错了?

1 个答案:

答案 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