I have PersonViewModel, DepartmentViewModel and their PersonView,DepartmentView.
PersonViewModel has empty constructor, however DepartmentViewModel has a parameter:
public class DepartmentViewModel
{
public DepartmentViewModel(ObservableCollection<Person> persons)
{}
}
I use the following service to open new window:
public interface IDialogService<T>
{
void Show(IUnityContainer unityContainer);
void ShowDialog(IUnityContainer unityContainer);
}
public class DialogService<T> : IDialogService<T> where T : Window
{
public void Show(IUnityContainer unityContainer)
{
var container = unityContainer;
container.Resolve<T>().Show();
}
public void ShowDialog(IUnityContainer unityContainer)
{
var container = unityContainer;
container.Resolve<T>().ShowDialog();
}
}
the above service works really good. So far, it works okay till I wanted to send parameters toDepartmentViewModel.
My App.xaml.cs has all stuff to instantiate viewModels inside ofOnStartup() method:
_container = new UnityContainer();
_container.RegisterType<IViewMainWindowViewModel, MainWindow>();
_container.RegisterType<IViewMainWindowViewModel, MainViewModel>();
_container.RegisterType<IViewPersonViewModel, PersonView>();
_container.RegisterType<IViewPersonViewModel, PersonViewModel>(new ContainerControlledLifetimeManager());
_container.RegisterType<IViewDepartmentViewModel, DepartmentView>();
_container.RegisterType<IViewDepartmentViewModel, DepartmentViewModel>(new ContainerControlledLifetimeManager());
//types
_container.RegisterType(typeof(IDialogService<>), typeof(DialogService<>));
_container.Resolve<MainWindow>().Show();
My question is how can I send a parameter to DepartmentViewModel
when I open new window from PersonViewModel?
My code to open new window from PersonViewModel:
private readonly IDialogService<DepartmentView> _dialogDepartmentView;
public void ContinueCommand_DoWork(object obj)
{
//want to send "persons" to departmentViewModel
ObservableCollection<Person> persons = new ObservableCollection<Person>();
// Open new dialog
_dialogDepartmentView.ShowDialog(_unityContainer);
}
How can I send ObservableCollection<Person> persons to DepartmentViewModel when I open new window through IDialogService?
Is it the case for EventAggregator pattern?