protected override void OnInitialize() { base.OnInitialize(); Shell = ParentModel.Shell; //если установили фильтр по мнн нужно сбросить поисковый запрос что бы отобразить все //товары с таким мнн ParentModel.ObservableForProperty(m => m.FilterByMnn).Where(x => x.Value) .Subscribe(_ => SearchBehavior.ActiveSearchTerm.Value = ""); //после закрытия формы нужно отписаться от событий родительской формы //что бы не делать лишних обновлений ParentModel.ObservableForProperty(m => (object)m.FilterByMnn) .Merge(ParentModel.ObservableForProperty(m => (object)m.CurrentFilter)) .Merge(ParentModel.ObservableForProperty(m => (object)m.ShowWithoutOffers)) .Merge(SearchBehavior.ActiveSearchTerm.Cast <Object>()) .Throttle(TimeSpan.FromMilliseconds(30), Scheduler) .Do(_ => IsLoading.Value = true) .Select(_ => RxQuery(LoadData)) .Switch() .Do(_ => IsLoading.Value = false) .Subscribe(Items, CloseCancellation.Token); Items.Subscribe(_ => { CurrentItem.Value = (Items.Value ?? Enumerable.Empty <CatalogDisplayItem>()).FirstOrDefault(); }); }
protected override void OnInitialize() { base.OnInitialize(); Promotions = new PromotionPopup(Shell.Config, CurrentCatalogName, Env); ParentModel.ObservableForProperty(m => (object)m.FilterByMnn, skipInitial: false) .Merge(ParentModel.ObservableForProperty(m => (object)m.CurrentFilter)) .Merge(ParentModel.ObservableForProperty(m => (object)m.ShowWithoutOffers)) .Select(_ => RxQuery(LoadCatalogNames)) .Switch() .Subscribe(CatalogNames, CloseCancellation.Token); CatalogNames.Subscribe(_ => { CurrentCatalogName.Value = CurrentCatalogName.Value ?? (CatalogNames.Value ?? Enumerable.Empty <CatalogName>()).FirstOrDefault(); }); ProducerPromotions = new ProducerPromotionPopup(Shell.Config, CurrentCatalogName, Env); }