Exemple #1
0
    public ListItemControl()
    {
        this.InitializeComponent();

        this.WhenActivated(disposables =>
        {
            this.WhenAnyValue(v => v.ViewModel)
            .BindTo(this, v => v.DataContext)
            .DisposeWith(disposables);

            this.OneWayBind(this.ViewModel, vm => vm.Item.DisplayNumber, v => v.NumberTextBlock.Text)
            .DisposeWith(disposables);

            this.OneWayBind(this.ViewModel, vm => vm.Item.Title, v => v.TitleTextBlock.Text)
            .DisposeWith(disposables);

            this.OneWayBind(this.ViewModel, vm => vm.Item.OriginalTitle, v => v.OriginalTitleTextBlock.Text)
            .DisposeWith(disposables);

            this.OneWayBind(this.ViewModel, vm => vm.Item.Year, v => v.YearTextBlock.Text)
            .DisposeWith(disposables);

            var isMouseOver = this.GetObservable(PointerEnterEvent).Select(_ => true)
                              .Merge(this.GetObservable(PointerLeaveEvent).Select(_ => false))
                              .DistinctUntilChanged()
                              .StartWith(false);

            this.WhenAnyValue(
                v => v.ViewModel !.Item.HighlightMode,
                v => v.ViewModel !.Item.IsSelected,
                (highlightMode, selected) => (Mode: highlightMode, Selected: selected))
            .CombineLatest(isMouseOver, (item, mouseOver) => (item.Mode, Show: !item.Selected && !mouseOver))
            .Select(item => item.Show ? this.GetColorForHighlightMode(item.Mode) : Brushes.Transparent)
            .ObserveOn(RxApp.MainThreadScheduler)
            .BindTo(this, v => v.Background)
            .DisposeWith(disposables);

            this.OneWayBind(
                this.ViewModel,
                vm => vm.Color,
                v => v.Foreground,
                color => Color.TryParse(color, out var result) ? result.ToBrush() : Brushes.Black)
            .DisposeWith(disposables);
        });
    }
Exemple #2
0
 public _(CombineLatest <T1, T2, T3, TResult> parent, IObserver <TResult> observer)
     : base(3, observer)
 {
     _parent = parent;
 }
Exemple #3
0
 public CombineLatestObserver(CombineLatest parent, int index)
 {
     this.parent = parent;
     this.index  = index;
 }
Exemple #4
0
 public RightObserver(CombineLatest parent)
 {
     this.parent = parent;
 }