Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/13/10 06:41:56 (14 years ago)
Author:
swagner
Message:

Implemented ReadOnlyView property for items (#969).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Collections/3.3/ObservableCollection.cs

    r3286 r3317  
    3434
    3535    #region Properties
     36    [Storable]
     37    private bool readOnlyView;
     38    public bool ReadOnlyView {
     39      get { return readOnlyView; }
     40      set {
     41        if (readOnlyView != value) {
     42          readOnlyView = value;
     43          OnReadOnlyViewChanged();
     44          OnPropertyChanged("ReadOnlyView");
     45        }
     46      }
     47    }
     48
    3649    public int Capacity {
    3750      get { return list.Capacity; }
     
    5467    public ObservableCollection() {
    5568      list = new List<T>();
     69      readOnlyView = ((ICollection<T>)list).IsReadOnly;
    5670    }
    5771    public ObservableCollection(int capacity) {
    5872      list = new List<T>(capacity);
     73      readOnlyView = ((ICollection<T>)list).IsReadOnly;
    5974    }
    6075    public ObservableCollection(IEnumerable<T> collection) {
    6176      list = new List<T>(collection);
     77      readOnlyView = ((ICollection<T>)list).IsReadOnly;
    6278    }
    6379    #endregion
     
    189205    #region Events
    190206    [field: NonSerialized]
     207    public event EventHandler ReadOnlyViewChanged;
     208    protected virtual void OnReadOnlyViewChanged() {
     209      EventHandler handler = ReadOnlyViewChanged;
     210      if (handler != null) handler(this, EventArgs.Empty);
     211    }
     212
     213    [field: NonSerialized]
    191214    public event CollectionItemsChangedEventHandler<T> ItemsAdded;
    192215    protected virtual void OnItemsAdded(IEnumerable<T> items) {
    193       if (ItemsAdded != null)
    194         ItemsAdded(this, new CollectionItemsChangedEventArgs<T>(items));
     216      CollectionItemsChangedEventHandler<T> handler = ItemsAdded;
     217      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items));
    195218    }
    196219
     
    198221    public event CollectionItemsChangedEventHandler<T> ItemsRemoved;
    199222    protected virtual void OnItemsRemoved(IEnumerable<T> items) {
    200       if (ItemsRemoved != null)
    201         ItemsRemoved(this, new CollectionItemsChangedEventArgs<T>(items));
     223      CollectionItemsChangedEventHandler<T> handler = ItemsRemoved;
     224      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items));
    202225    }
    203226
     
    205228    public event CollectionItemsChangedEventHandler<T> CollectionReset;
    206229    protected virtual void OnCollectionReset(IEnumerable<T> items, IEnumerable<T> oldItems) {
    207       if (CollectionReset != null)
    208         CollectionReset(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));
     230      CollectionItemsChangedEventHandler<T> handler = CollectionReset;
     231      if (handler != null) handler(this, new CollectionItemsChangedEventArgs<T>(items, oldItems));
    209232    }
    210233
     
    212235    public event PropertyChangedEventHandler PropertyChanged;
    213236    protected virtual void OnPropertyChanged(string propertyName) {
    214       if (PropertyChanged != null)
    215         PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     237      PropertyChangedEventHandler handler = PropertyChanged;
     238      if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    216239    }
    217240    #endregion
Note: See TracChangeset for help on using the changeset viewer.