コード例 #1
0
        private void LoadGroups()
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            _changeSubscription?.Dispose();

            // Load presets for the current solution
            Groups = new TrulyObservableCollection <DocumentGroup>(LoadGroupsForSolution());

            _changeSubscription = new CompositeDisposable
            {
                Observable.FromEventPattern <NotifyCollectionChangedEventArgs>(Groups, nameof(TrulyObservableCollection <DocumentGroup> .CollectionChanged))
                .Subscribe(re => SaveGroupsForSolution()),

                Observable.FromEventPattern <PropertyChangedEventArgs>(Groups, nameof(TrulyObservableCollection <DocumentGroup> .CollectionItemChanged))
                .Where(re => re.EventArgs.PropertyName == nameof(DocumentGroup.Name) ||
                       re.EventArgs.PropertyName == nameof(DocumentGroup.Files) ||
                       re.EventArgs.PropertyName == nameof(DocumentGroup.Positions) ||
                       re.EventArgs.PropertyName == nameof(DocumentGroup.Slot))
                .Throttle(TimeSpan.FromSeconds(1))
                .ObserveOnDispatcher()
                .Subscribe(re => SaveGroupsForSolution())
            };

            GroupsReset?.Invoke(this, EventArgs.Empty);
        }
コード例 #2
0
        private void LoadGroups()
        {
            _changeSubscription?.Dispose();

            // Load presets for the current solution
            Groups = new TrulyObservableCollection <DocumentGroup>(LoadGroupsForSolution());

            _changeSubscription = new CompositeDisposable
            {
                Observable.FromEventPattern <NotifyCollectionChangedEventArgs>(Groups, "CollectionChanged")
                .Subscribe(re => SaveGroupsForSolution()),

                Observable.FromEventPattern <PropertyChangedEventArgs>(Groups, "CollectionItemChanged")
                .Where(re => re.EventArgs.PropertyName == "Name" || re.EventArgs.PropertyName == "Slot")
                .Throttle(TimeSpan.FromSeconds(1))
                .ObserveOnDispatcher()
                .Subscribe(re => SaveGroupsForSolution())
            };

            GroupsReset?.Invoke(this, EventArgs.Empty);
        }