public RoutedViewHost() { HorizontalContentAlignment = HorizontalAlignment.Stretch; VerticalContentAlignment = VerticalAlignment.Stretch; routerChange = new Subject <IRoutingState>(); routerChange.Subscribe(x => { if (_inner != null) { _inner.Dispose(); _inner = null; } _inner = x.ViewModelObservable().Subscribe(vm => { if (vm == null) { Content = DefaultContent; return; } var view = RxRouting.ResolveView(vm); view.ViewModel = vm; Content = view; }); }); }
public ViewModelViewHost() { this.ObservableFromDP(x => x.ViewModel) .Subscribe(vm => { if (vm.Value == null) { Content = DefaultContent; return; } var view = RxRouting.ResolveView(vm.Value); view.ViewModel = vm.Value; Content = view; }); }
public ViewModelViewHost() { var latestViewModel = updateViewModel .Select(_ => (ViewModel ?? DataContext)) .StartWith((object)null); latestViewModel.Subscribe(vm => { if (vm == null) { Content = DefaultContent; return; } var view = RxRouting.ResolveView(vm); view.ViewModel = vm; Content = view; }); }
public ViewModelViewHost() { var latestViewModel = Observable.CombineLatest( this.ObservableFromDP(x => x.ViewModel).Select(x => x.Value).StartWith((IReactiveNotifyPropertyChanged)null), this.ObservableFromDP(x => x.DataContext).Select(x => x.Value).OfType <IReactiveNotifyPropertyChanged>().StartWith((IReactiveNotifyPropertyChanged)null), (vm, dc) => vm ?? dc); latestViewModel.Subscribe(vm => { if (vm == null) { Content = DefaultContent; return; } var view = RxRouting.ResolveView(vm); view.ViewModel = vm; Content = view; }); }
public RouterUINavigationController(IRoutingState router) { this.router = router; router.Navigate.Subscribe(x => { var view = RxRouting.ResolveView(x); view.ViewModel = x; this.PushViewController((UIViewController)view, true); }); router.NavigateBack.Subscribe(_ => this.PopViewControllerAnimated(true)); router.NavigateAndReset.Subscribe(x => { this.PopToRootViewController(false); router.Navigate.Execute(x); }); this.Delegate = new RouterUINavigationControllerDelegate(this, router); }
public RoutedViewHost() { this.ObservableFromDP(x => x.Router) .Subscribe(x => { if (_inner != null) { _inner.Dispose(); _inner = null; } _inner = x.Value.CurrentViewModel.Subscribe(vm => { if (vm == null) { Content = DefaultContent; return; } var view = RxRouting.ResolveView(vm); view.ViewModel = vm; Content = view; }); }); }
public RoutedViewHost() { HorizontalContentAlignment = HorizontalAlignment.Stretch; VerticalContentAlignment = VerticalAlignment.Stretch; if (RxApp.InUnitTestRunner()) { return; } this.WhenAny(x => x.Router.NavigationStack, x => x.Value) .SelectMany(x => x.CollectionCountChanged.StartWith(x.Count).Select(_ => x.LastOrDefault())) .Subscribe(vm => { if (vm == null) { Content = DefaultContent; return; } var view = RxRouting.ResolveView(vm); view.ViewModel = vm; Content = view; }, ex => RxApp.DefaultExceptionHandler.OnNext(ex)); }