Esempio n. 1
0
        void FilterLimitedViewModels(IEnumerable <TViewModel> viewmodels, bool sorted = false)
        {
            notifying = true;

            bool filterApplied = false;

            if (Limitation?.Enabled ?? false)
            {
                int previousViewmodels = viewmodels.Count();
                viewmodels    = viewmodels.Except(StaticViewModels).Take(Limitation.Maximum);
                viewmodels    = viewmodels.Union(StaticViewModels);
                filterApplied = viewmodels.Count() != previousViewmodels;
            }

            if (sorted || filterApplied)
            {
                LimitedViewModels?.Reset(viewmodels);
            }
            else
            {
                LimitedViewModels?.Replace(viewmodels);
            }

            notifying = false;
        }
Esempio n. 2
0
 protected override void DisposeManagedResources()
 {
     LimitedViewModels.IgnoreEvents       = true;
     LimitedViewModels.CollectionChanged -= HandleViewModelsCollectionChanged;
     base.ViewModels.IgnoreEvents         = true;
     base.ViewModels.CollectionChanged   -= HandleBaseViewModelModelsCollectionChanged;
     base.DisposeManagedResources();
     Limitation = null;
     if (LimitedViewModels != null && LimitedViewModels.Any())
     {
         foreach (var viewModel in LimitedViewModels)
         {
             viewModel.Dispose();
         }
         LimitedViewModels.Clear();
     }
     LimitedViewModels = null;
 }
Esempio n. 3
0
 /// <summary>
 /// Gets the enumerator of the LimitedViewModels. This method is automatically called in a foreach.
 /// </summary>
 /// <returns>The enumerator.</returns>
 public override IEnumerator <TViewModel> GetEnumerator()
 {
     return(LimitedViewModels.GetEnumerator());
 }