Keeping view models alive
In Catel, view models are automatically closed when the
UserControl is unloaded from the visual tree. This is because there is no guarantee that the control will be loaded again. This works great in most of the cases, but sometimes you need more control about the lifetime of the view model. One good example is the use of the
TabControl. When a tab control contains a user control with a view model, every time a new tab is selected, the controls on the previously selected tab are unloaded (and thus the view models are closed).
It is possible to have more control about the lifetime of view models. To keep a view model alive, even when the view is unloaded, set the
CloseViewModelOnUnloaded property of the
UserControl to false in the constructor of the view:
CloseViewModelOnUnloaded = false;
The view model will now be re-used when the view is loaded into the visual tree again.
Have a question about Catel? Use StackOverflow with the Catel tag!