Windows Phone 8 - MVVM ViewModels and App.xaml.cs

本文关键字:and App xaml cs ViewModels MVVM Phone Windows | 更新日期: 2023-09-27 18:32:28

我一直在研究MVVM模式并将其应用于Windows Phone 8应用程序中,我有一个关于在应用程序中初始化和访问ViewModels的最佳实践的问题。

当我从 WP8 SDK 模板创建数据绑定应用程序时,我注意到 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. 如果我的应用有多个 ViewModels,它们是否都作为成员存储在 App.xaml.cs 文件中?

  2. 如果同时加载每个 ViewModel 的数据,如何管理应用的内存?是否可以卸载每个视图模型的数据,只加载我的视图正在使用的视图模型?

Windows Phone 8 - MVVM ViewModels and App.xaml.cs

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

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

MVVM 实例化方法

回答您的问题;1.-按照您的方法,您必须在 App.xaml.cs 文件中为所有 ViewModels 定义成员。2.- 您可以遵循一种在需要之前不实例化视图模型的方法。

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