2013-09-03 3 views
0

Я смущен о возможностях кода Builder MvvmCross Dialog.MvvmCross Android Dialog - поведение вложенных RootElements

У меня есть SettingsView, который наследуется от BaseSettingsView.

В следующем коде на iOS показан диалог с одним разделом. Когда этот раздел щелкнули, это создает еще одну панель, которая имеет сечение в RootElement:

Root = new RootElement("Settings") 
{ 
    new Section() 
    { 
     (Element) new RootElement("Location Settings") 
            { 
             new Section("Details") 
              { 
               new EntryElement("Name", "Location Name"), 
              }, 
            }, 
          } 
        }; 

Однако на Android, с SettingsView, который имеет точно такой же код, когда секция щелкнули, никакой другой панель или вид. Мне интересно, возможно ли иметь такое «вложенное представление» на Android, или я должен создать обработчик кликов для этой записи, который покажет совершенно новый диалог при навигации к другому ViewModel.

Интересно, что следующий код создаст элемент, который при нажатии будет создавать совершенно новое диалоговое окно, в котором есть запись в вложенном RootElement внутри него. Однако, насколько мне кажется, это работает только для RadioGroups?

Root = new RootElement("Settings") 
     { 
      new Section() 
       { 
      (Element) new RootElement("Status", new RadioGroup(0)) 
          { 
           new Section("Status") 
            { 
             new RadioElement("On"), 
             new RadioElement("Off"), 
            }, 
          }, 
       }, 

Я посмотрел на примере MVX Dialog и осматривал N + 1, но не могу найти какие-либо указаний о том, возможен ли или желательно таком роде автоматической навигации к вложенным RootElements с MvvmCross на Android.

Спасибо,

Мэтью

ответ

1

Я считаю, что это наследуется MonoDroid.Dialog - от https://github.com/kevinmcmahon/MonoDroid.Dialog/tree/lastsnapshot

Интересно, следующий код будет производить элемент, который при нажатии на будет создавать совершенно новый диалоговое окно, в котором есть запись внутри вложенного RootElement внутри него. Однако, насколько мне кажется, это работает только для RadioGroups?

Я не думаю, что это правильно - я думаю RadioGroups показать Android всплывающее окно Dialog s, чтобы разрешить выбор - видеть реализацию в https://github.com/slodge/MvvmCross/blob/v3/CrossUI/CrossUI.Droid/Dialog/Elements/RootElement.cs#L327

Существует также недавний код вклад в этой области в https://github.com/slodge/MvvmCross/issues/392 - но я Я лично не смотрел на это.

+0

Спасибо Стюарт. Подводя итог, как я понимаю: всплывающее окно встроено только для RadioGroup на Droid. Вложенные RootElements в iOS предоставляют автоматическую навигацию на другой экран с элементами под этим RootElement. Поэтому, чтобы поддерживать подэлементы настроек при нажатии на элемент, мне лучше отключить вызов ShowViewModel <> или иначе создать новый диалог для желаемого подменю. – MisterMat

+0

Нет ничего встроенного, что, вероятно, было связано с тем, что Dialog был построен поверх операций, которые работают с другой моделью памяти/жизненного цикла для UIViewControllers. Но я подозреваю, что вы могли бы построить что-то довольно быстро (день?), Если бы захотели, особенно если вы посмотрели фрагменты или на какую-то часть работы linearlayout, которую недавно сделали другие. Не пытаясь избежать вопроса - что вам лучше всего делать, действительно зависит от того, что нужно приложениям и сколько времени у вас есть. – Stuart

+1

Возможно ли размещать код компоновщика элементов внутри фрагмента вместо диалога? В идеале (и это помогло бы облегчить анимацию), я хотел бы иметь разные страницы настроек как фрагменты внутри диалога или действия.В противном случае я, когда я открою подстраницу настроек, думаю, мне нужно было бы загрузить новое диалоговое окно для каждой страницы - что можно сделать, но не так аккуратно – MisterMat

Смежные вопросы