using System.Collections.ObjectModel;
using System.Collections.Specialized;
namespace CMM.Library.Base;
///
/// Represents a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed.
///
///
public class ObservableRangeCollection : ObservableCollection
{
///
/// Adds the elements of the specified collection to the end of the ObservableCollection(Of T).
///
public void AddRange(IEnumerable collection)
{
if (collection == null) throw new ArgumentNullException("collection");
foreach (var i in collection) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
///
/// Removes the first occurence of each item in the specified collection from ObservableCollection(Of T).
///
public void RemoveRange(IEnumerable collection)
{
if (collection == null) throw new ArgumentNullException("collection");
foreach (var i in collection) Items.Remove(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
///
/// Clears the current collection and replaces it with the specified item.
///
public void Replace(T item)
{
ReplaceRange(new T[] { item });
}
///
/// Clears the current collection and replaces it with the specified collection.
///
public void ReplaceRange(IEnumerable collection)
{
if (collection == null) throw new ArgumentNullException("collection");
Items.Clear();
foreach (var i in collection) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
///
/// Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection(Of T) class.
///
public ObservableRangeCollection()
: base() { }
///
/// Initializes a new instance of the System.Collections.ObjectModel.ObservableCollection(Of T) class that contains elements copied from the specified collection.
///
/// collection: The collection from which the elements are copied.
/// The collection parameter cannot be null.
public ObservableRangeCollection(IEnumerable collection)
: base(collection) { }
}