我一直在关注MvvmCross的跨平台移动开发。
由于视图导航是通过调用ShowViewModel<>()完成的,因此如何使用MvvmCross在Windows 8中创建设置窗格(用户控件)?
答案 0 :(得分:3)
MvvmCross提供了一种通用的ShowViewModel<T>
导航机制,它使用Presenter在View
上显示和设置DataContext。以这种方式显示的视图通常覆盖“整个屏幕”,并受益于使用CIRS自动构建的ViewModel(参见http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html)
但是,仅仅因为导航通常使用ShowViewModel<T>
完成,这不会阻止您以其他方式使用ViewModels。 ShowViewModel<T>
机制的常见例外情况包括iOS Tabbed和SplitView子系统,WindowsPhone Pivot / Panorama项目,Android子片段和对话框,以及Windows8子窗格,例如弹出窗口。
在Windows8的实际级别中,每个XAML UserControl都有一个可以在代码中设置的DataContext属性 - 因此您可以随时:
new
,Mvx.IoCConstruct<TViewModel>()
Mvx.Resolve<IMvxViewModelLoader>().LoadViewModel(request, state)
DataContext
属性你在代码中执行此操作...是否使用页面代码隐藏,一些Messenger-Message接收器或其他一些机制 - 这取决于你 - 但这是适合放入UI代码的东西项目 - 这绝对是一个观点问题。
最后一个......虽然设置窗格确实是UserControl
,但LayoutAwarePage
也是UserControl
- 所以你可以使用LayoutAwarePage
在弹出窗口中 - 但是不要期望在你做的时候看到OnNavigatedTo
调用 - 例如请参阅http://code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49
SettingsFlyout