My app uses views, which implement IViewFor<T> interface. The views are registered with the dependency resolver in AppBootstrapper. The app displays the views using ViewModelViewHost control by assigning a corresponding view model to control's ViewModel property. All the view models implement ISupportsActivation interface.
I noticed that WhenActivated is called twice. First it's called when a view and view model get activated. Then on deactivation all disposables are disposed and WhenActivated is called again immediately followed by disposing the disposables.
I am testing with the following code both in view and view model:
this.WhenActivated(disposables => { Debug.WriteLine("ViewModel activated."); Disposable .Create(() => { Debug.WriteLine("ViewModel deactivated."); }) .AddTo(disposables); }); As a result the output looks like this:
// App displays the view: ViewModel activated. View activated. // App hides the view: ViewModel deactivated. View deactivated. ViewModel activated. View activated. ViewModel deactivated. View deactivated. The view is hidden by setting ViewModel property of ViewModelViewHost control to null.
Am I doing something wrong?
1 Answers
Answers 1
You can check this link. There is a very good explenation of everything. This is all I can offer without the knowledge of what you did in the "View" itself.
It is possible that the "ViewModel and View" are called twice because you are creating two LoadingViewModels.
0 comments:
Post a Comment