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。
既然如此,我有以下问题:
如果我的应用有多个 ViewModels,它们是否都作为成员存储在 App.xaml.cs 文件中?
如果同时加载每个 ViewModel 的数据,如何管理应用的内存?是否可以卸载每个视图模型的数据,只加载我的视图正在使用的视图模型?
许多不同的方法来实例化 ViewModels。其中一些将在启动时实例化所有内容,而另一些则在需要之前不会实例化 ViewModel。
在下面的博客文章中,您将找到一些实例化 ViewModel 的可能方法:
MVVM 实例化方法
回答您的问题;1.-按照您的方法,您必须在 App.xaml.cs 文件中为所有 ViewModels 定义成员。2.- 您可以遵循一种在需要之前不实例化视图模型的方法。
有一些工具包,如MVVM Light或Caliburn Micro,可以简化MVVM模式的实现。我个人使用MVVM Light Toolkit,它使用定位器方法。使用此工具包,默认情况下会在需要时加载 ViewModels,但您可以将其设置为在启动时加载特定的 ViewModel,这在某些情况下可能很有用。