123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Collections.Specialized;
- using System.Linq;
- namespace MECF.Framework.UI.Client.ClientBase.Collections
- {
- /// <summary>
- /// Represents a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- public class ObservableRangeCollection<T> : ObservableCollection<T>
- {
- #region Constructors
- /// <summary>
- /// Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection(Of T) class.
- /// </summary>
- public ObservableRangeCollection()
- {
- }
- /// <summary>
- /// Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection(Of T) class that contains elements copied from the specified collection.
- /// </summary>
- /// <param name="collection">collection: The collection from which the elements are copied.</param>
- /// <exception cref="System.ArgumentNullException">The collection parameter cannot be null.</exception>
- public ObservableRangeCollection(IEnumerable<T> collection)
- : base(collection)
- {
- }
- #endregion
-
- /// <summary>
- /// Adds the elements of the specified collection to the end of the ObservableCollection(Of T).
- /// </summary>
- public virtual void AddRange(IEnumerable<T> collection)
- {
- if (collection == null) throw new ArgumentNullException(nameof(collection));
- var startIndex = Count;
- var enumerable = collection.ToList();
- foreach (var i in enumerable)
- Items.Add(i);
- OnCollectionChanged(
- new NotifyCollectionChangedEventArgs(
- NotifyCollectionChangedAction.Reset));
- }
- /// <summary>
- /// Removes the first occurence of each item in the specified collection from ObservableCollection(Of T).
- /// </summary>
- public virtual void RemoveRange(IEnumerable<T> collection)
- {
- if (collection == null) throw new ArgumentNullException(nameof(collection));
- foreach (var i in collection)
- Items.Remove(i);
- OnCollectionChanged(
- new NotifyCollectionChangedEventArgs(
- NotifyCollectionChangedAction.Reset));
- }
- /// <summary>
- /// Clears the current collection and replaces it with the specified item.
- /// </summary>
- public virtual void Replace(T item)
- {
- ReplaceRange(new[] {item});
- }
- /// <summary>
- /// Clears the current collection and replaces it with the specified collection.
- /// </summary>
- public void ReplaceRange(IEnumerable<T> collection)
- {
- if (collection == null) throw new ArgumentNullException(nameof(collection));
- Items.Clear();
- foreach (var i in collection) Items.Add(i);
- OnCollectionChanged(
- new NotifyCollectionChangedEventArgs(
- NotifyCollectionChangedAction.Reset));
- }
- }
- }
|