私はMVVMパターンを勉強して、Windows Phone 8アプリケーションで実践しています。ViewModelsの初期化とアクセスのベストプラクティスに関する質問がありますアプリ。Windows Phone 8 - MVVM ViewModelsとApp.xaml.cs
私は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();
}
}
アプリケーションクラスは、MainViewModelを静的メンバとして含み、アプリケーションがアクティブになると、ViewModelがロードされます。
ケースであること、私は次の質問持っていること:私のアプリはいくつかのviewmodelsを持っている場合
、それらのすべてがApp.xaml.csファイル内のメンバーとして保存されますか?
すべてのViewModelのデータが同時に読み込まれる場合、アプリのメモリを管理するにはどうすればよいですか?各ViewModelのデータをアンロードし、Viewで使用されているViewModelだけをロードすることはできますか?
偉大な答え、ありがとう!また、リファレンスも素晴らしいです:) このアプローチを使用すると、使用していないときにあまりにも多くのメモリを占有したくない場合、私のViewModelsからデータをアンロードする最も良い方法は何でしょうか。 ? – miguelarcilla
私はあなたのViewModelにIDisposableを実装し、Viewを離れるときにそれを廃棄するオプションがあると思います。 – anderZubi
andersZubiの答えを展開すると、私はアプリの現在の状態を表すシングルトンを作成し、Dictionary型のプロパティを持っています。ビューモデルを必要とするすべてのページまたはコントロールは、まず辞書を検索し、それがまだ存在しない場合は作成し、辞書にviewModelを追加します。次にIDisposableの場合は、ビューをアンロードするときにそのビューを破棄する必要はありません。ビューがアンロードされた後でも、任意のトリガーに基づいてそのビューを破棄することを選択できます。辞書のビューモデルの「キー」 –