【发布时间】:2013-05-14 13:17:32
【问题描述】:
我在 Windows Phone 7.5 及更高版本上处理一个项目(6 页)目标。我不做纯 MVVM 模型,因为处理导航事件和查询字符串太痛苦了,我决定一个一个地学习,先完成项目:P
由于我是 MVVM 的新手,我决定不使用 MVVM Light,自己编写所有样板代码。 当我完成每个部分的编码时,我面临一个问题。
在哪里绑定视图模型是最有效的。我阅读了很多并总结了以下几点。
-
在 App.xaml.cs 中创建 Model 实例作为属性,并在视图的代码隐藏中进行绑定。(这是官方数据绑定应用程序示例的方式。)但是当面对大量视图时( 6 页等),这可能是个问题。
public partial class App : Application { private static MainViewModel viewModel = null; /// <summary> /// A static ViewModel used by the views to bind against. /// </summary> /// <returns>The MainViewModel object.</returns> public static MainViewModel ViewModel { get { // Delay creation of the view model until necessary if (viewModel == null) viewModel = new MainViewModel(); return viewModel; } } } 在视图后面的代码中创建一个新的视图模型实例作为全局变量。所以我可以在整个视图中使用它。 (如上,我不做纯MVVM)
-
在后面的代码中,在构造函数中,做一次绑定。
public MainPage() { InitializeComponent(); myViewModel vm = new myViewModel(); DataContext = vm; }
我阅读了使用 ViewModelLocator 作为中心站的 mvvm light。但是避免使用mvvm light,你们觉得在哪里绑定viewmodel最好呢?
【问题讨论】:
-
您还可以在 App.xaml 或 SomePage.xaml 中将其定义为资源,然后将 DataContext 绑定到该资源,这样您甚至不需要任何代码。现在你有 5 个选项。 :) 将它保存在 App.xaml.cs 中的好处之一是您可以在不同视图之间共享相同的 VM 实例 - 如果这正是您所需要的。
-
感谢@igrali,现在我知道何时将视图模型放入 App 部分 :)
标签: c# windows-phone-7 mvvm viewmodel