你如何绑定一个ViewModel在MvvmCross Windows 8的设置窗格?(How do

2019-09-01 22:58发布

我一直在看MvvmCross实现跨平台的移动开发。

由于意见导航是通过调用ShowViewModel <>(),你会如何创建一个使用MvvmCross设置窗格(这是一个用户控件)在Windows 8?

Answer 1:

MvvmCross提供了一个通用ShowViewModel<T>它使用一个演示者显示和设置在DataContext上导航机制View秒。 被示这样的观点通常覆盖“整个屏幕”并受益于使用CIRS自动构造的ViewModels(见http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html )

然而,仅仅因为导航是用典型的做法ShowViewModel<T>这并不妨碍你在其他方面使用的ViewModels。 到公共例外ShowViewModel<T>机构事情等的iOS选项卡式和SPLITVIEW儿童,WindowsPhone的枢轴/全景的物品,机器人亚片段和对话框,以及Windows8的子窗格如弹出按钮。


在Windows8的实践层面,每一个XAML用户控件都有,你可以在代码中设置一个DataContext属性 - 让你随时可以:

  • 在代码中创建任何用户控件
  • 然后创建一个视图模型
    • 使用new
    • 使用Mvx.IoCConstruct<TViewModel>()
    • 或使用Mvx.Resolve<IMvxViewModelLoader>().LoadViewModel(request, state)
  • 然后将用户控件DataContext属性
  • 然后显示用户控件

当你这样做在你的代码...无论您使用的网页代码背后,一些信使,消息接收器或其他一些机制 - 嗯,这是给你 - 但是这东西是适当的投入UI代码项目 - 这是绝对是一个视图的关注。


最后一个拨出......虽然这是事实,设置窗格是一个UserControl ,一个LayoutAwarePage也是一个UserControl -所以你可以使用LayoutAwarePage在弹出按钮太多-但不要指望看到OnNavigatedTo当你调用电话-例如,看到SettingsFlyout在http://code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49



文章来源: How do you bind a ViewModel to the Windows 8 Settings pane in MvvmCross?