MVVM ツールキットを使用しています。私のViewModelsには、ViewModelを別のViewModelに切り替えるときに保存したいデータを保持しています。
ViewModel の切り替えを担当するのは ViewModelLocator です。
http://simplemvvmtoolkit.codeplex.com/wikipage?title=Getting%20 開始点 8.
ViewModelLocator は毎回新しい ViewModel を返します:
public class ViewModelLocator
{
// Create ProductListViewModel on demand
public ProductListViewModel ProductListViewModel
{
get
{
IProductServiceAgent serviceAgent = new MockProductServiceAgent();
return new ProductListViewModel(serviceAgent);
}
}
}
MVVM のルールを破りたくありません。私はこのような新しいオブジェクトを作成することを考えていました:
public class ViewModelLocator
{
private ProductListViewModel productListViewModel;
// Create ProductListViewModel on demand
public ProductListViewModel ProductListViewModel
{
get
{
IProductServiceAgent serviceAgent = new MockProductServiceAgent();
if (productListViewModel == null)
productListViewModel = new ProductListViewModel(serviceAgent);
return productListViewModel;
}
}
}
...またはViewModelを切り替えている間、ViewModelをシリアライズし、ロードし直すとデシリアライズ...
この問題の適切な解決策は何ですか?