2

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

因此,在 ViewModel 中,我想提示下一个视图的放置位置。就像是

ShowViewModel(paramObject, ShowInMaster);

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

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

4

1 回答 1

3

presentationBundle您可以在大多数ShowViewModel覆盖中使用一个可选参数 - 请参阅https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross/ViewModels/MvxNavigatingObject.cs#L39

您可以简单地从 a 创建一个包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 中

于 2014-03-04T09:40:32.977 回答