我有兩個ViewModel:MainViewModel和QuestionViewModel。我在ViewModelLocator中註冊它們。ViewModel在MVVM Light中沒有收到消息
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<QuestionViewModel>();
On MainViewModel我有一個ListBox的問題。當點擊我執行此命令時
NavigationService.NavigateTo(new Uri("/Pages/QuestionPage.xaml", UriKind.Relative));
Messenger.Default.Send<Question, QuestionViewModel>(q);
QuestionPage的DataContext設置爲QuestionViewModel。在QuestionViewModel我註冊消息:
Messenger.Default.Register<Question>(this, q =>
{
MessageBox.Show("!");
});
不過這個功能對QuestionViewModel的第二隻開放工作,因爲QuestionViewModel實例都僅在第一開口造成的。我的問題是:何時何地需要在MVVM Light中創建QuestionViewModel的實例?我不想在啓動時創建我的所有頁面。現在
,我在構造函數中ViewModelLocator創建實例:
public ViewModelLocator()
{
ServiceLocator.Current.GetInstance<QuestionViewModel>();
}
這是很好的做法?