I have two ViewModels: MainViewModel and QuestionViewModel. I Register they in ViewModelLocator.
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<QuestionViewModel>();
On MainViewModel I have a ListBox with Questions. When Click I execute this command
NavigationService.NavigateTo(new Uri("/Pages/QuestionPage.xaml", UriKind.Relative));
Messenger.Default.Send<Question, QuestionViewModel>(q);
QuestionPage's DataContext set to QuestionViewModel. On QuestionViewModel I register message:
Messenger.Default.Register<Question>(this, q =>
{
MessageBox.Show("!");
});
But this function work only on second open of QuestionViewModel, because QuestionViewModel instance creates only on first opening. My Question is: Where and When I need to create instance of QuestionViewModel in MVVM Light? I dont want create all my pages at startup.
Now, I create instance in constructor ViewModelLocator:
public ViewModelLocator()
{
ServiceLocator.Current.GetInstance<QuestionViewModel>();
}
It is good practice?