如何将ViewModel绑定到MvvmCross中的Windows 8设置窗格?

时间:2013-05-03 21:45:38

标签: mvvm windows-8 windows-runtime windows-store-apps mvvmcross

我一直在关注MvvmCross的跨平台移动开发。

由于视图导航是通过调用ShowViewModel<>()完成的,因此如何使用MvvmCross在Windows 8中创建设置窗格(用户控件)?

1 个答案:

答案 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属性 - 因此您可以随时:

  • 在代码中创建任何UserControl
  • 然后创建一个ViewModel
    • 使用new
    • 使用Mvx.IoCConstruct<TViewModel>()
    • 或使用Mvx.Resolve<IMvxViewModelLoader>().LoadViewModel(request, state)
  • 然后设置UserControls DataContext属性
  • 然后显示UserControl

你在代码中执行此操作...是否使用页面代码隐藏,一些Messenger-Message接收器或其他一些机制 - 这取决于你 - 但这是适合放入UI代码的东西项目 - 这绝对是一个观点问题。


最后一个......虽然设置窗格确实是UserControl,但LayoutAwarePage也是UserControl - 所以你可以使用LayoutAwarePage在弹出窗口中 - 但是不要期望在你做的时候看到OnNavigatedTo调用 - 例如请参阅http://code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49

中的SettingsFlyout