Как намекнуть, где показать вид в MvvmCross с SplitView

Мое приложение MvvmCross использует собственный презентатор, который создает SplitView при запуске на Ipad. И мастер, и деталь содержат контроллер навигации. Это прекрасно работает, за исключением того, что я не знаю, как намекнуть на систему, где я хочу показать следующий вид. У меня есть пара видов, которые иногда должны отображаться в подробном виде, а иногда в мастере. При запуске на iPhone они будут отображаться в одном навигационном контроллере.

Так что в ViewModel я хотел бы намекнуть, где разместить следующий вид. Что-то вроде

ShowViewModel(paramObject, ShowInMaster);

При запуске на iPhone ShowInMaster будет игнорироваться.

Возможно ли это или я все делаю неправильно?

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

Затем запрос будет передан вашему представителю пользовательского интерфейса (так называемая "навигационная служба" в других платформах) - и ваш пользовательский код в докладчиках на каждой платформе может затем решить, что делать с этими подсказками "презентации" - например, он может переопределить 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 на http://mvvmcross.blogspot.com/

Другие вопросы по тегам