在Windows Phone的MVVM Light工具包中,每当我要添加一个新的MvvmLightView(WP)项时,我最终都会为我创建一个PhoneApplicationPage模板。
当我想创建嵌套视图时,例如在ListBox ItemTemplate视图的情况下,情况如何。
在MVVM Light之前,每当我需要一个视图来分隔标记时,我就会创建一个标准的UserControl,并且工作正常。
我是否应该在创建可导航页面时仅使用MvvmLightView?
答案 0 :(得分:0)
项目模板是一个指导,为您生成一些代码。 创建视图或子视图的单一方式不是,也不打算。
在您提及的情况下,通常会在自己的视图模型上创建一个用户控件帽。然后,此子视图视图模型作为属性包含在主视图模型中。要将它传递给子视图(例如用户控件),请将此属性绑定到用户控件的DataContext。
<ext:MyUserControl DataContext="{Binding MySubViewProperty}"/>
但是,您不需要单独的视图模型,在某些情况下,共享主视图模型更合适。在这种情况下,您不需要执行上述绑定,因为它是隐式执行的。此外,当您在DataTemplate中使用用户控件时,模板DataContext将隐式传递给用户控件,您不需要绑定。通常,只需要在绑定到当前上下文的属性或另一个上下文时设置数据上下文。
MVVM是关于自由和MVVM Light关于支持开发人员使用这种自由。所有指导都是最佳实践,并且通常提供最简单和/或最一致的方式,但没有什么能阻止您在有充分理由的情况下沿着另一条路线前进。特别是模板只是提供一个问题的快捷方式,但不适用于一般(意味着每个)的情况。