mvvm - 如何将 ViewModel 绑定(bind)到 MvvmCross 中的 Windows 8 设置 Pane ?

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

我一直在寻找用于跨平台移动开发的 MvvmCross。

由于 View 导航是通过调用 ShowViewModel<>() 完成的,因此如何使用 MvvmCross 在 Windows 8 中创 build 置 Pane (用户控件)?

最佳答案

MvvmCross提供了通用的ShowViewModel<T>使用 Presenter 在 View 上显示和设置 DataContext 的导航机制s。以这种方式显示的 View 通常覆盖“整个屏幕”,并受益于使用 CIRS 自动构建的 ViewModel(请参阅 http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html )

但是,仅仅因为导航通常是使用 ShowViewModel<T> 完成的这并不妨碍您以其他方式使用 ViewModel。 ShowViewModel<T> 的常见异常(exception)机制包括 iOS Tabbed 和 SplitView 子项、WindowsPhone Pivot/Panorama 项目、Android 子片段和对话框以及 Windows8 子 Pane (例如弹出窗口)。


在 Windows8 中,每个 XAML UserControl 都有一个 DataContext 属性,您可以在代码中设置该属性 - 因此您始终可以:

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

您在代码中执行此操作的位置...无论您使用页面代码隐藏、某些 Messenger-Message 接收器还是其他某种机制 - 好吧,这取决于您 - 但这是适合放入 UI 代码中的内容项目 - 这绝对是一个 View 问题。


最后一点……虽然设置 Pane 确实是 UserControl ,一个LayoutAwarePage也是UserControl太 - 所以你可以使用 LayoutAwarePage也在弹出窗口中 - 但不要指望看到 OnNavigatedTo当您这样做时调用 - 例如参见SettingsFlyouthttp://code.msdn.microsoft.com/windowsapps/App-settings-sample-1f762f49

关于mvvm - 如何将 ViewModel 绑定(bind)到 MvvmCross 中的 Windows 8 设置 Pane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368013/

相关文章:

c# - 我必须做什么才能使我的方法可等待?

xaml - 如何更改特定元素的 TextBox 占位符文本颜色,而不是全局

winrt 中的 C# gpgpu

WPF (MVVM) 数据绑定(bind)问题

mvvm - 如何使用 xamarin 表单提高移动设备的性能

c++ - 在 Windows 上使用适用于 C++ 的 Google API 客户端库

c# - 可移植类库的 Entity Framework

c# - 在 Windows Phone 8.1 Universal Store App 中触发警报?

c# - 使用 MVVM 在中继命令中运行异步方法

silverlight - ItemTemplate 中 DataContext 的访问属性