Как намекнуть, где показать вид в 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/