回答

3

MvvmCross提供了一個通用的ShowViewModel<T>導航機制,它使用Presenter在View上顯示和設置DataContext。這顯示這樣的觀點通常覆蓋「全屏幕」,並受益於使用CIRS自動構造的ViewModels(見http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html

然而,僅僅因爲導航使用ShowViewModel<T>通常這樣做並不妨礙你在其他使用的ViewModels方法。 ShowViewModel<T>機制的常見例外情況是iOS標籤和SplitView子項,WindowsPhone數據透視/ Panorama項目,Android子片段和對話框以及Windows8子窗格(如彈出窗口)。


在Windows8的實踐層面,每一個XAML用戶控件都有,你可以在代碼中設置一個DataContext屬性 - 讓你隨時可以:

  • 在代碼中創建的任何用戶控件
  • 然後創建一個視圖模型
    • 使用new
    • 使用Mvx.IoCConstruct<TViewModel>()
    • 或使用Mvx.Resolve<IMvxViewModelLoader>().LoadViewModel(request, state)
  • 然後將用戶控件DataContext財產
  • 然後顯示用戶控件

如果你這樣做在你的代碼...無論您使用的網頁代碼背後,一些信使 - 消息接收器或其他一些機制 - 這取決於你 - 但這是適合放入UI代碼項目的東西 - 這絕對是View的關注點。


最後一個撥出......雖然這是事實,設置窗格是UserControl,一個LayoutAwarePage也是UserControl過 - 所以你可以使用彈出按鈕LayoutAwarePage太 - 但不要指望看到OnNavigatedTo調用當你​​做 - 例如請參閱SettingsFlyout in http://code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49

+0

非常感謝您的明確回答。它似乎是您的博客文檔的最佳地點。是否有特定的時間點我可以開始閱讀關於您的博客的v3?愛N + 0系列,保持它! – 2013-05-05 15:10:42

+1

是的,你可以在今天下午1:38開始閱讀! (其他時間也是允許​​的) – Stuart 2013-05-05 16:28:38

+0

:)我的意思是,你什麼時候開始寫博客瞭解v3的變化? – 2013-05-06 17:50:31

相關問題