【问题标题】:How to hint where to show a view in MvvmCross with SplitView如何使用 SplitView 提示在 MvvmCross 中显示视图的位置
【发布时间】:2014-03-04 17:40:32
【问题描述】:

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

所以我想在 ViewModel 中提示下一个视图的放置位置。类似的东西

ShowViewModel(paramObject, ShowInMaster);

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

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

【问题讨论】:

    标签: ios ipad xamarin.ios mvvmcross uisplitview


    【解决方案1】:

    有一个可选的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 了解默认行为)

    如果有帮助,一个简单的拆分视图显示(使用固定逻辑而不是演示提示)在 N=24 of http://mvvmcross.blogspot.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多