I've been studying the MVVM pattern and putting it into practice in a Windows Phone 8 app, and I have a question about the best practices for initializing and accessing ViewModels in an app.
When I create a Databound Application from the WP8 SDKs templates, I noticed this code in the App.xaml.cs file:
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();
}
}
From what I understand, that means that the App class contains the MainViewModel as a static member, and when the application is activated, the ViewModel is loaded.
That being the case, I have the following questions:
If my App has several ViewModels, would all of them be stored as members inside the App.xaml.cs file?
If every ViewModel's data is loaded at the same time, how do I manage my app's memory? Is it possible to unload each ViewModel's data and only load the ViewModel that is being used by my View?