/// <summary>
 /// Syntactic sugar/convenience overload for the real RxUI onewaybind allowing one to specify
 /// conversion hint as a BooleanVisibilityHint without specifying it as a named parameter.
 /// </summary>
 public static IDisposable OneWayBind <TViewModel, TView, TVMProp, TVProp>(
     this TView view,
     TViewModel viewModel,
     Expression <Func <TViewModel, TVMProp> > vmProperty,
     Expression <Func <TView, TVProp> > viewProperty,
     BooleanToVisibilityHint conversionHint)
     where TViewModel : class
     where TView : IViewFor
 {
     return(BindingMixins.OneWayBind(view, viewModel, vmProperty, viewProperty, conversionHint: conversionHint));
 }
 public static IDisposable BindVisibility <TView, TViewModel, TViewProperty>(
     this TView view,
     TViewModel viewModel,
     Expression <Func <TViewModel, ValidationHelper> > viewModelHelperProperty,
     Expression <Func <TView, TViewProperty> > viewProperty,
     BooleanToVisibilityHint conversionHint = BooleanToVisibilityHint.Inverse | BooleanToVisibilityHint.UseHidden)
     where TView : Control, IViewFor <TViewModel>
     where TViewModel : ReactiveObject, IValidatableViewModel
 {
     return
         (view.WhenAnyValue(v => v.ViewModel)
          .Where(vm => vm != null)
          .Select(vm => vm.WhenAnyValue(viewModelHelperProperty)
                  .SelectMany(vmh => vmh.ValidationChanged))
          .Switch()
          .Select(vc => vc.IsValid)
          .BindTo(view, viewProperty, conversionHint, vmToViewConverterOverride: s_boolToVisTypeConverter));
 }
Beispiel #3
0
        private void BindCommands(CompositeDisposable disposables)
        {
            var boolToVisibility = new BooleanToVisibilityTypeConverter();
            const BooleanToVisibilityHint useHidden = BooleanToVisibilityHint.UseHidden;

            this.BindCommand(this.ViewModel, vm => vm.GoToSeries, v => v.GoToSeriesButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToSeries, v => v.GoToSeriesIconButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.GoToSeries.CanExecute)
            .BindTo(this, v => v.GoToSeriesIconButton.Visibility, useHidden, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Cancel, v => v.CancelButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.Cancel.CanExecute)
            .BindTo(this, v => v.CancelButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToNext, v => v.GoToNextButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.GoToNext.CanExecute)
            .BindTo(this, v => v.GoToNextButton.Visibility, useHidden, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToPrevious, v => v.GoToPreviousButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.GoToPrevious.CanExecute)
            .BindTo(this, v => v.GoToPreviousButton.Visibility, useHidden, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Delete, v => v.DeleteButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.Delete.CanExecute)
            .BindTo(this, v => v.DeleteButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddTitle, v => v.AddTitleButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.AddTitle.CanExecute)
            .BindTo(this, v => v.AddTitleButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddOriginalTitle, v => v.AddOriginalTitleButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.AddOriginalTitle.CanExecute)
            .BindTo(this, v => v.AddOriginalTitleButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.Save)
            .Subscribe(_ => this.LoadPoster())
            .DisposeWith(disposables);
        }
Beispiel #4
0
        private void BindCommands(CompositeDisposable disposables)
        {
            var boolToVisibility = new BooleanToVisibilityTypeConverter();
            const BooleanToVisibilityHint useHidden = BooleanToVisibilityHint.UseHidden;

            this.BindCommand(this.ViewModel, vm => vm.GoToSeries, v => v.GoToSeriesButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToSeries, v => v.GoToSeriesIconButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.GoToSeries.CanExecute)
            .BindTo(this, v => v.GoToSeriesIconButton.Visibility, useHidden, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Cancel, v => v.CancelButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.Cancel.CanExecute)
            .BindTo(this, v => v.CancelButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToNext, v => v.GoToNextButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.GoToNext.CanExecute)
            .BindTo(this, v => v.GoToNextButton.Visibility, useHidden, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToPrevious, v => v.GoToPreviousButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.GoToPrevious.CanExecute)
            .BindTo(this, v => v.GoToPreviousButton.Visibility, useHidden, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Delete, v => v.DeleteButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.Delete.CanExecute)
            .BindTo(this, v => v.DeleteButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.SwitchToNextPoster, v => v.SwitchToNextPosterButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.SwitchToNextPoster.CanExecute)
            .BindTo(this, v => v.SwitchToNextPosterButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.SwitchToPreviousPoster, v => v.SwitchToPreviousPosterButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.SwitchToPreviousPoster.CanExecute)
            .BindTo(this, v => v.SwitchToPreviousPosterButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.ViewModel.Periods.ToObservableChangeSet()
            .Count()
            .Select(count => count > 1)
            .ObserveOnDispatcher()
            .BindTo(this, v => v.SwitchPosterPanel.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddTitle, v => v.AddTitleButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.AddTitle.CanExecute)
            .BindTo(this, v => v.AddTitleButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddOriginalTitle, v => v.AddOriginalTitleButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.AddOriginalTitle.CanExecute)
            .BindTo(this, v => v.AddOriginalTitleButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddPeriod, v => v.AddPeriodButton)
            .DisposeWith(disposables);

            this.WhenAnyObservable(v => v.ViewModel.AddPeriod.CanExecute)
            .BindTo(this, v => v.AddPeriodButton.Visibility, null, boolToVisibility)
            .DisposeWith(disposables);
        }
        private void BindCommands(CompositeDisposable disposables)
        {
            const BooleanToVisibilityHint useHidden = BooleanToVisibilityHint.UseHidden;

            this.BindCommand(this.ViewModel !, vm => vm.GoToSeries, v => v.GoToSeriesButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToSeries, v => v.GoToSeriesIconButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToSeries.CanExecute
            .BindTo(this, v => v.GoToSeriesIconButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Cancel, v => v.CancelButton)
            .DisposeWith(disposables);

            this.ViewModel !.Cancel.CanExecute
            .BindTo(this, v => v.CancelButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToNext, v => v.GoToNextButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToNext.CanExecute
            .BindTo(this, v => v.GoToNextButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToPrevious, v => v.GoToPreviousButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToPrevious.CanExecute
            .BindTo(this, v => v.GoToPreviousButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Delete, v => v.DeleteButton)
            .DisposeWith(disposables);

            this.ViewModel !.Delete.CanExecute
            .BindTo(this, v => v.DeleteButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.AddTitle, v => v.AddTitleButton)
            .DisposeWith(disposables);

            this.ViewModel !.AddTitle.CanExecute
            .BindTo(this, v => v.AddTitleButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.AddOriginalTitle, v => v.AddOriginalTitleButton)
            .DisposeWith(disposables);

            this.ViewModel !.AddOriginalTitle.CanExecute
            .BindTo(this, v => v.AddOriginalTitleButton.Visibility)
            .DisposeWith(disposables);

            this.ViewModel !.Save
            .Subscribe(_ => this.LoadPoster())
            .DisposeWith(disposables);
        }
Beispiel #6
0
        private void BindCommands(CompositeDisposable disposables)
        {
            const BooleanToVisibilityHint useHidden = BooleanToVisibilityHint.UseHidden;

            this.BindCommand(this.ViewModel !, vm => vm.Save, v => v.SaveButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Cancel, v => v.CancelButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToFranchise, v => v.GoToFranchiseButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToFranchise.CanExecute
            .BindTo(this, v => v.GoToFranchiseButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToFranchise, v => v.GoToFranchiseArrowButton)
            .DisposeWith(disposables);

            this.ViewModel.GoToFranchise.CanExecute
            .BindTo(this, v => v.GoToFranchiseArrowButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToNext, v => v.GoToNextButton)
            .DisposeWith(disposables);

            this.ViewModel.GoToNext.CanExecute
            .BindTo(this, v => v.GoToNextButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.GoToPrevious, v => v.GoToPreviousButton)
            .DisposeWith(disposables);

            this.ViewModel.GoToPrevious.CanExecute
            .BindTo(this, v => v.GoToPreviousButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddMovie, v => v.AddMovieButton)
            .DisposeWith(disposables);

            this.ViewModel.AddMovie.CanExecute
            .BindTo(this, v => v.AddMovieButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddSeries, v => v.AddSeriesButton)
            .DisposeWith(disposables);

            this.ViewModel.AddSeries.CanExecute
            .BindTo(this, v => v.AddSeriesButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddFranchise, v => v.AddFranchiseButton)
            .DisposeWith(disposables);

            this.ViewModel.AddFranchise.CanExecute
            .BindTo(this, v => v.AddFranchiseButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.CreateFranchise, v => v.CreateFranchiseButton)
            .DisposeWith(disposables);

            this.ViewModel.CreateFranchise.CanExecute
            .BindTo(this, v => v.CreateFranchiseButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.Delete, v => v.DeleteButton)
            .DisposeWith(disposables);

            this.ViewModel.Delete.CanExecute
            .BindTo(this, v => v.DeleteButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddTitle, v => v.AddTitleButton)
            .DisposeWith(disposables);

            this.ViewModel.AddTitle.CanExecute
            .BindTo(this, v => v.AddTitleButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel, vm => vm.AddOriginalTitle, v => v.AddOriginalTitleButton)
            .DisposeWith(disposables);

            this.ViewModel.AddOriginalTitle.CanExecute
            .BindTo(this, v => v.AddOriginalTitleButton.Visibility)
            .DisposeWith(disposables);

            Observable.CombineLatest(this.ViewModel.Save.CanExecute, this.ViewModel.Cancel.CanExecute)
            .AnyTrue()
            .BindTo(this, v => v.ActionPanel.Visibility)
            .DisposeWith(disposables);

            this.ViewModel.Save
            .Subscribe(_ => this.LoadPoster())
            .DisposeWith(disposables);

            this.ViewModel.AddExistingItem
            .Subscribe(_ => this.AddableItemsComboBox.SelectedItem = null)
            .DisposeWith(disposables);
        }
Beispiel #7
0
        private void BindCommands(CompositeDisposable disposables)
        {
            const BooleanToVisibilityHint useHidden = BooleanToVisibilityHint.UseHidden;

            this.BindCommand(this.ViewModel !, vm => vm.Save, v => v.SaveButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Cancel, v => v.CancelButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Close, v => v.CloseButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.Delete, v => v.DeleteButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToFranchise, v => v.GoToFranchiseButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToFranchise.CanExecute
            .BindTo(this, v => v.GoToFranchiseButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToFranchise, v => v.GoToFranchiseArrowButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToFranchise.CanExecute
            .BindTo(this, v => v.GoToFranchiseArrowButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToNext, v => v.GoToNextButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToNext.CanExecute
            .BindTo(this, v => v.GoToNextButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.GoToPrevious, v => v.GoToPreviousButton)
            .DisposeWith(disposables);

            this.ViewModel !.GoToPrevious.CanExecute
            .BindTo(this, v => v.GoToPreviousButton.Visibility, useHidden)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.CreateFranchise, v => v.CreateFranchiseButton)
            .DisposeWith(disposables);

            this.ViewModel !.CreateFranchise.CanExecute
            .BindTo(this, v => v.CreateFranchiseButton.Visibility)
            .DisposeWith(disposables);

            this.ViewModel !.Delete.CanExecute
            .BindTo(this, v => v.DeleteButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.AddTitle, v => v.AddTitleButton)
            .DisposeWith(disposables);

            this.ViewModel !.AddTitle.CanExecute
            .BindTo(this, v => v.AddTitleButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.AddOriginalTitle, v => v.AddOriginalTitleButton)
            .DisposeWith(disposables);

            this.ViewModel !.AddOriginalTitle.CanExecute
            .BindTo(this, v => v.AddOriginalTitleButton.Visibility)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.AddSeason, v => v.AddSeasonButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.AddSpecialEpisode, v => v.AddSpecialEpisodeButton)
            .DisposeWith(disposables);

            this.BindCommand(this.ViewModel !, vm => vm.ConvertToMiniseries, v => v.ConvertToMiniseriesButton)
            .DisposeWith(disposables);

            this.ViewModel !.ConvertToMiniseries.CanExecute
            .BindTo(this, v => v.ConvertToMiniseriesButton.Visibility)
            .DisposeWith(disposables);

            Observable.CombineLatest(this.ViewModel !.Save.CanExecute, this.ViewModel !.Cancel.CanExecute)
            .AnyTrue()
            .BindTo(this, v => v.ActionPanel.Visibility)
            .DisposeWith(disposables);

            this.ViewModel !.Save
            .Subscribe(_ => this.LoadPoster())
            .DisposeWith(disposables);
        }