Exemple #1
0
        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();
        }