いくつかの MvvmCross ビデオ ( http://www.youtube.com/watch?v=cYu_9rcAJU4&feature=youtu.be&t=33m41s )で以前に説明したように
ビューモデルからビューへの強い参照を削除しようとしています。
PropertyChanged += が使用されている WeakSubscribe() を実装したので、アクションを使用してビューを観察できるようにするいくつかのシナリオに出くわしました。これにより、メモリリークが再び発生する可能性があると思われるため、根絶を試みます。
ただし、WeakReference は INotifyPropertyChanged ソースへのフックに基づいて機能します。
では、弱い参照を介してビューに通知できるように、コードをリファクタリングして Action を破棄し、PropertyChanged を介して起動する必要がありますか?
以下は、現在の強く参照されているアーキテクチャのサンプル コードです。
ビューモデル
public event Action Loaded;
public HomeViewModel()
{
FeaturedProductCategoryViewModel = new FeaturedProductsViewModel();
FeaturedProductCategoryViewModel.OnPopulated += () =>
{
if (Loaded != null) Loaded();
};
}
意見
public MainHomePageView()
: base(GetNibName("MainHomePageView"), null)
{
this.EnableLandscapeRotation ();
}
protected override void ViewJustLoaded()
{
this.ViewModel.Loaded += LoadControls;
}
void LoadControls()
{
//load controls when view model is populated
}