我一直在寻找 MvvmCross 用于跨平台移动开发。
由于视图导航是通过调用 ShowViewModel<>() 完成的,那么如何使用 MvvmCross 在 Windows 8 中创建设置窗格(这是一个用户控件)?
我一直在寻找 MvvmCross 用于跨平台移动开发。
由于视图导航是通过调用 ShowViewModel<>() 完成的,那么如何使用 MvvmCross 在 Windows 8 中创建设置窗格(这是一个用户控件)?
MvvmCross 提供了一种通用的ShowViewModel<T>
导航机制,它使用 Presenter 来显示和设置View
s 上的 DataContext。以这种方式显示的视图通常覆盖“整个屏幕”并受益于使用 CIRS 自动构建的 ViewModel(请参阅http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html)
然而,仅仅因为导航通常使用ShowViewModel<T>
它来完成并不能阻止您以其他方式使用 ViewModel。该机制的常见例外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 代码项目的东西 - 它是绝对是一个视图问题。
最后一个...虽然设置窗格确实是 a UserControl
, aLayoutAwarePage
也是 a UserControl
- 所以你也可以LayoutAwarePage
在弹出窗口中使用 - 但不要期望看到OnNavigatedTo
调用时调用 - 例如SettingsFlyout
在http: //code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49