public void ShowModalWindow(WindowType windowType, object vm) { if (openWindows.Contains(windowType)) { return; } ; openWindows.Add(windowType); Messenger.Default.Send <DialogOpenedMessage>(new DialogOpenedMessage { Sender = this }); if (windowType == WindowType.AddFieldWindow) { addFieldWindow = new AddFieldWindow(); addFieldWindow.DataContext = vm; addFieldWindow.Show(); } else if (windowType == WindowType.PickupWindow) { pickupWindow = new PickupWindow(); pickupWindow.DataContext = vm; pickupWindow.Show(); } else if (windowType == WindowType.LoadingWindow) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { loadingWindow = new LoadingWindow(); loadingWindow.DataContext = vm; loadingWindow.Show(); })); } else if (windowType == WindowType.LoadingAtGin) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { loadingAtGinWindow = new LoadingAtGin(); loadingAtGinWindow.DataContext = vm; loadingAtGinWindow.Show(); })); } else if (windowType == WindowType.UnloadingAtGin) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { unloadingAtGinWindow = new UnloadingWindow(); unloadingAtGinWindow.DataContext = vm; unloadingAtGinWindow.Show(); })); } else if (windowType == WindowType.LoadingIncorrectModuleWindow) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { loadingIncorrectModuleWindow = new LoadingIncorrectModuleWindow(); loadingIncorrectModuleWindow.DataContext = vm; loadingIncorrectModuleWindow.Show(); })); } else if (windowType == WindowType.WaitingForUnloadWindow) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { waitingForUnloadWindow = new WaitingForUnloadWindow(); waitingForUnloadWindow.DataContext = vm; waitingForUnloadWindow.Show(); })); } else if (windowType == WindowType.UnloadCorrectionWindow) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { unloadCorrectionWindow = new UnloadingCorrectionWindow(); unloadCorrectionWindow.DataContext = vm; unloadCorrectionWindow.Show(); })); } else if (windowType == WindowType.ChangeListWindow) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { loadingIncorrectModuleWindow.StopBeep(); changeFieldWindow = new ChangeFieldWindow(); changeFieldWindow.DataContext = vm; changeFieldWindow.Show(); })); } else if (windowType == WindowType.TruckSetupWindow) { System.Windows.Application.Current.Dispatcher.Invoke(new Action(() => { firstRunWindow = new FirstRunWindow(); firstRunWindow.DataContext = vm; firstRunWindow.Show(); })); } }