public override void OnApplyTemplate() { var selector = this.Template.Resources["propertytemplateSelector"] as DataTemplateSelector; Content ??= new ContentControl { ContentTemplateSelector = selector }; interactiveList = this.GetTemplateChild("Main_InteractiveList") as InteractiveList; //this.SelectChanges<string>(nameof(Group)).Subscribe(a => //{ // interactiveList.Group = a; //}); var objects = SelectChanges <IEnumerable>(nameof(ItemsSource)) .Where(a => a != null) .Select(its => its.MakeObservable()) .Switch(); var(collectionViewModel, disposable) = (Group == null) ? InteractiveCollectionFactory.Build( objects, getkeyObservable: Observable.Return(new Func <object, object>(a => Guid.NewGuid())), isCheckableObervable: Observable.Return(false), filter: Observable.Return(new DefaultFilter())) : InteractiveCollectionFactory.BuildGroup( objects, getkeyObservable: Observable.Return(new Func <object, object>(a => Guid.NewGuid())), filter: Observable.Return(new DefaultFilter()), groupParameter: this.SelectChanges <string>(nameof(Group))); //isCheckableObervable: Observable.Return(false), interactiveList.InteractiveCollectionBase = collectionViewModel; collectionViewModel.Items.MakeObservable().Subscribe(a => { }); collectionViewModel.SelectSelected() .CombineLatest( SelectChanges <IValueConverter>(nameof(DataConverter)).StartWith(default(IValueConverter)), SelectChanges <string>(nameof(DataKey)).StartWith(default(string)), (a, b, c) => (a, b, c)) .ObserveOnDispatcher() .Subscribe(a => { var c = a.a; if (a.b != null) { c = a.b.Convert(c, default, default, default);
private IObservable <InteractiveCollectionBase <object> > Build(IObservable <string> key) { return(Observable.Return(InteractiveCollectionFactory.Build( elems: DataSubject.SelectMany(v => v.Cast <object>()), getkeyObservable: key.Select(_ => GetKeyFunc(_)), filter: FilterSubject, deletedObservable: DeletedSubject.WithLatestFrom(IsRemovableSubject.DistinctUntilChanged(), (d, r) => r ? d : null).Where(v => v != null), clearedObervable: ClearedSubject, deleteableObervable: IsRemovableSubject, isCheckableObervable: IsCheckableSubject, doubleClickToCheck: DoubleClickToCheckSubject ).collectionViewModel)); }
public override void OnApplyTemplate() { Content ??= new ItemsControl(); interactiveList = this.GetTemplateChild("Main_InteractiveList") as InteractiveList; var objects = (this).SelectChanges <IEnumerable>(nameof(ItemsSource)) .Select(its => its.MakeObservable()) .Switch(); var ic = InteractiveCollectionFactory.Build(objects, getkeyObservable: Observable.Return(new Func <object, object>(a => Guid.NewGuid())), filter: Observable.Return(new DefaultFilter()), isCheckableObervable: Observable.Return(true)); //objects.Switch().Subscribe(ic => Objects = ic); interactiveList.InteractiveCollectionBase = ic.collectionViewModel; ic.collectionViewModel.Items.MakeObservable().Subscribe(a => { }); //.Merge(this.SelectLoads() ////.Select(a => Content ??= new JsonView())) //.DistinctUntilChanged(a => a?.GetType().Name)); var xx = SelectChanges <string>(nameof(MasterDetailCheckView.Id)) .StartWith(Id) .CombineLatest(objects, (id, b) => b.GetType().GetProperty(id)) .Select(prop => ic.collectionViewModel.SelectCheckedChanges().ToObservableChangeSet(c => prop.GetValue(c.obj))) .Switch() .Filter(a => a.isChecked) .Transform(a => a.obj) .ToCollection() .CombineLatest(this.WhenAnyValue(c => c.Content) .Where(a => a != null), (collection, obj) => (collection, obj)) .Subscribe(ab => { SetCollection(ab.obj, ab.collection); }); }