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(); }); }
public DrinksPage() { InitializeComponent(); this.WhenActivated(async closer => { if (ViewModel != null) { await ViewModel?.Activate(); } }); }
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()); }
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); }
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(); }); }