Windows Phone 8 – MVVM ViewModels和App.xaml.cs

我一直在研究MVVM模式并将其应用到Windows Phone 8应用程序中,我对在应用程序中初始化和访问ViewModel的最佳实践有疑问。

当我从WP8 SDKs模板创建数据绑定应用程序时 ,我注意到App.xaml.cs文件中的这段代码:

public static MainViewModel ViewModel { get { // Delay creation of the view model until necessary if (viewModel == null) viewModel = new MainViewModel(); return viewModel; } } private void Application_Activated(object sender, ActivatedEventArgs e) { // Ensure that application state is restored appropriately if (!App.ViewModel.IsDataLoaded) { App.ViewModel.LoadData(); } } 

据我所知,这意味着App类包含MainViewModel作为静态成员,并且在激活应用程序时,将加载ViewModel。

既然如此,我有以下问题:

  1. 如果我的应用程序有多个ViewModel,它们是否都会作为成员存储在App.xaml.cs文件中?

  2. 如果同时加载每个ViewModel的数据,我该如何管理我的应用程序的内存? 是否可以卸载每个ViewModel的数据并仅加载我的View正在使用的ViewModel?

有许多不同的方法来实例化ViewModels。 其中一些将在启动时实例化所有,而其他人在需要之前不会实例化ViewModel。

在以下博客文章中,您将找到一些实例化ViewModel的可能方法:

MVVM实例化方法

回答你的问题; 1.-按照您的方法,您必须在App.xaml.cs文件中为所有ViewModel定义成员。 2.-您可以遵循不需要实例化ViewModel的方法。

存在一些工具包,例如MVVM Light或Caliburn Micro ,它们可以简化MVVM模式的实现。 我个人使用MVVM Light Toolkit ,它使用Locator方法。 使用此工具包时,默认情况下会在需要时加载ViewModel,但您可以将其设置为在启动时加载特定的ViewModel,这在某些情况下很有用。