mig*_*lla 7 c# mvvm viewmodel windows-phone-8
我一直在研究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();
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着App类包含MainViewModel作为静态成员,并且在激活应用程序时,将加载ViewModel.
既然如此,我有以下问题:
如果我的应用程序有多个ViewModel,它们是否都会作为成员存储在App.xaml.cs文件中?
如果同时加载每个ViewModel的数据,我该如何管理我的应用程序的内存?是否可以卸载每个ViewModel的数据并仅加载我的View正在使用的ViewModel?
有许多不同的方法来实例化ViewModels.其中一些将在启动时实例化所有,而其他人在需要之前不会实例化ViewModel.
在以下博客文章中,您将找到一些实例化ViewModel的可能方法:
回答你的问题; 1.-按照您的方法,您必须在App.xaml.cs文件中为所有ViewModel定义成员.2.-您可以遵循不需要实例化ViewModel的方法.
存在一些工具包,例如MVVM Light或Caliburn Micro,它们可以简化MVVM模式的实现.我个人使用MVVM Light Toolkit,它使用Locator方法.使用此工具包时,默认情况下会在需要时加载ViewModel,但您可以将其设置为在启动时加载特定的ViewModel,这在某些情况下很有用.
| 归档时间: |
|
| 查看次数: |
3983 次 |
| 最近记录: |