Ejemplo n.º 1
0
        protected BaseView()
        {
            IDisposable[] observeActivatedOnce = { null };

            observeActivatedOnce[0] = this.WhenActivated(d =>
            {
                var log = ((IApp)Application.Current).Root.Resolve <Func <Type, ILogger> >()(typeof(BaseShellView));
                log.Trace($"{this} loaded");

                d(WhenViewLoaded
                  .Select(_ => ViewModel.Activate().ToObservable().Take(1))
                  .Concat()
                  .Subscribe());
                d(WhenViewUnloaded
                  .Select(_ => ViewModel.Deactivate(false).ToObservable().Take(1))
                  .Concat()
                  .Subscribe());
                d(observeActivatedOnce[0]);


                WhenViewLoaded.Subscribe(_ => log.Trace($"{this} loaded"));
                WhenViewUnloaded.Subscribe(_ => log.Trace($"{this} unloaded"));

                ViewModel.Activate().Wait();
            });
        }
Ejemplo n.º 2
0
        public DrinksPage()
        {
            InitializeComponent();

            this.WhenActivated(async closer =>
            {
                if (ViewModel != null)
                {
                    await ViewModel?.Activate();
                }
            });
        }
Ejemplo n.º 3
0
        private bool?ShowDialog <T>(ViewModel viewModel)
            where T : Window, new()
        {
            viewModel.Activate();

            var owner = MainWindow;

            var window = new T();

            window.DataContext = viewModel;

            if (owner != null)
            {
                window.Owner = owner;
            }

            return(window.ShowDialog());
        }
Ejemplo n.º 4
0
        private Window Show <T>(ViewModel viewModel)
            where T : Window, new()
        {
            viewModel.Activate();

            var owner = MainWindow;

            var window = new T();

            window.DataContext = viewModel;

            if (owner != null)
            {
                window.Owner = owner;
            }

            window.Show();

            return(window);
        }
Ejemplo n.º 5
0
        protected BaseShellView()
        {
            WindowStartupLocation = WindowStartupLocation.CenterOwner;

            IDisposable[] observeActivatedOnce = { null };

            observeActivatedOnce[0] = this.WhenActivated(d =>
            {
                var log = ((IApp)Application.Current).Root.Resolve <Func <Type, ILogger> >()(typeof(BaseShellView));
                log.Trace($"{this} loaded");

                d(this.OneWayBind(ViewModel, vm => vm.ActiveScreen.Title, v => v.Title));

                d(WhenShellLoaded
                  .Merge(WhenShellActivated)
                  .Select(_ => ViewModel.Activate().ToObservable().Take(1))
                  .Concat()
                  .Subscribe()
                  );
                d(WhenShellDeactivated
                  .Select(_ => ViewModel.Deactivate(false).ToObservable().Take(1))
                  .Concat()
                  .Subscribe()
                  );
                d(WhenShellClosing
                  .Where(_ => !ForceClose)
                  .Do(e => e.Cancel = true)
                  .Select(e => ViewModel.TryClose().ToObservable().Take(1))
                  .Concat()
                  .Where(closed => closed.Status == ActionStatus.Success)
                  .Do(_ => ForceClose = true)
                  .Select(_ => Observable.Start(Close, RxApp.MainThreadScheduler).Take(1))
                  .Concat()
                  .Subscribe()
                  );
                d(WhenShellClosed
                  .Do(_ => IsClosed = true)
                  .Select(_ => ViewModel.Deactivate(true).ToObservable().Take(1))
                  .Concat()
                  .Subscribe()
                  );

                d(ViewModel.WhenViewModelClosed
                  .Where(_ => !IsClosed)
                  .Do(_ => ForceClose = true)
                  .Select(_ => Observable.Start(Close, RxApp.MainThreadScheduler).Take(1))
                  .Concat()
                  .Subscribe()
                  );

                d(this.WhenAnyValue(x => x.IsActive).Where(x => x)
                  .Subscribe(_ => ViewModel.LastActivedDateTime = DateTimeOffset.Now));

                d(observeActivatedOnce[0]);

                d(WhenShellLoaded.Subscribe(_ => log.Trace($"{this} loaded")));
                d(WhenShellActivated.Subscribe(_ => log.Trace($"{this} activated")));
                d(WhenShellDeactivated.Subscribe(_ => log.Trace($"{this} deactivated")));
                d(WhenShellClosing.Subscribe(_ => log.Trace($"{this} closing")));
                d(WhenShellClosed.Subscribe(_ => log.Trace($"{this} closed")));

                ViewModel?.Activate().Wait();
            });
        }