private void OpenOrFocusSimView(object sender, RoutedEventArgs e) { var instance = Application.Current.Windows.OfType <DataToolSimView>().FirstOrDefault(); if (instance == null) { instance = new DataToolSimView(); } instance.Owner = this; instance.PostInitialize(); }
public DataToolProgressTransition(Func <ProgressWorker, SynchronizationContext, Window, Task <Control> > fn, string name) { InitializeComponent(); ViewContext = SynchronizationContext.Current; _progressWorker.OnProgress += UpdateProgress; var window = new DataToolSimView { ModuleName = name, Visibility = Visibility.Hidden }; var t = new Thread(() => { Control control = null; try { control = fn(_progressWorker, window.ViewContext, window).GetAwaiter().GetResult(); } catch (Exception e) { MessageBox.Show(e.Message, "DataTool Error", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); } if (control == null) { window.ViewContext.Send(x => { window.Close(); }, this); ViewContext.Send(x => { Close(); }, this); return; } window.DataToolControl = control; window.ViewContext.Send(x => { if (!(x is DataToolSimView view)) { return; } view.Visibility = Visibility.Visible; view.Show(); }, window); ViewContext.Send(x => { Close(); }, this); }); t.SetApartmentState(ApartmentState.STA); t.Start(); }