ReadOnlyObservableCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / System / Collections / ObjectModel / ReadOnlyObservableCollection.cs / 2 / ReadOnlyObservableCollection.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) 2003 by Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: Read-only wrapper around an ObservableCollection. 
//
// See spec at http://avalon/connecteddata/Specs/Collection%20Interfaces.mht 
//
//---------------------------------------------------------------------------

using System; 
using System.Collections;
using System.Collections.Generic; 
using System.Collections.Specialized; 
using System.ComponentModel;
 
namespace System.Collections.ObjectModel
{
    /// 
    /// Read-only wrapper around an ObservableCollection. 
    /// 
    [Serializable()] 
    public class ReadOnlyObservableCollection : ReadOnlyCollection, INotifyCollectionChanged, INotifyPropertyChanged 
    {
        #region Constructors 

        //-----------------------------------------------------
        //
        //  Constructors 
        //
        //----------------------------------------------------- 
 
        /// 
        /// Initializes a new instance of ReadOnlyObservableCollection that 
        /// wraps the given ObservableCollection.
        /// 
        public ReadOnlyObservableCollection(ObservableCollection list) : base(list)
        { 
            ((INotifyCollectionChanged)Items).CollectionChanged += new NotifyCollectionChangedEventHandler(HandleCollectionChanged);
            ((INotifyPropertyChanged)Items).PropertyChanged += new PropertyChangedEventHandler(HandlePropertyChanged); 
        } 

        #endregion Constructors 

        #region Interfaces

        //------------------------------------------------------ 
        //
        //  Interfaces 
        // 
        //-----------------------------------------------------
 
        #region INotifyCollectionChanged

        /// 
        /// CollectionChanged event (per ). 
        /// 
        event NotifyCollectionChangedEventHandler INotifyCollectionChanged.CollectionChanged 
        { 
            add     { CollectionChanged += value; }
            remove  { CollectionChanged -= value; } 
        }

        /// 
        /// Occurs when the collection changes, either by adding or removing an item. 
        /// 
        ///  
        /// see  
        /// 
        [field:NonSerializedAttribute()] 
        protected virtual event NotifyCollectionChangedEventHandler CollectionChanged;

        /// 
        /// raise CollectionChanged event to any listeners 
        /// 
        protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs args) 
        { 
            if (CollectionChanged != null)
            { 
                CollectionChanged(this, args);
            }
        }
 
        #endregion INotifyCollectionChanged
 
        #region INotifyPropertyChanged 

        ///  
        /// PropertyChanged event (per ).
        /// 
        event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
        { 
            add     { PropertyChanged += value; }
            remove  { PropertyChanged -= value; } 
        } 

        ///  
        /// Occurs when a property changes.
        /// 
        /// 
        /// see  
        /// 
        [field:NonSerializedAttribute()] 
        protected virtual event PropertyChangedEventHandler PropertyChanged; 

        ///  
        /// raise PropertyChanged event to any listeners
        /// 
        protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
        { 
            if (PropertyChanged != null)
            { 
                PropertyChanged(this, args); 
            }
        } 

        #endregion INotifyPropertyChanged

        #endregion Interfaces 

        #region Private Methods 
 
        //------------------------------------------------------
        // 
        //  Private Methods
        //
        //------------------------------------------------------
 
        // forward CollectionChanged events from the base list to our listeners
        void HandleCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
        { 
            OnCollectionChanged(e);
        } 

        // forward PropertyChanged events from the base list to our listeners
        void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
        { 
            OnPropertyChanged(e);
        } 
 
        #endregion Private Methods
 
        #region Private Fields

        //-----------------------------------------------------
        // 
        //  Private Fields
        // 
        //------------------------------------------------------ 

        #endregion Private Fields 
    }
}

 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) 2003 by Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: Read-only wrapper around an ObservableCollection. 
//
// See spec at http://avalon/connecteddata/Specs/Collection%20Interfaces.mht 
//
//---------------------------------------------------------------------------

using System; 
using System.Collections;
using System.Collections.Generic; 
using System.Collections.Specialized; 
using System.ComponentModel;
 
namespace System.Collections.ObjectModel
{
    /// 
    /// Read-only wrapper around an ObservableCollection. 
    /// 
    [Serializable()] 
    public class ReadOnlyObservableCollection : ReadOnlyCollection, INotifyCollectionChanged, INotifyPropertyChanged 
    {
        #region Constructors 

        //-----------------------------------------------------
        //
        //  Constructors 
        //
        //----------------------------------------------------- 
 
        /// 
        /// Initializes a new instance of ReadOnlyObservableCollection that 
        /// wraps the given ObservableCollection.
        /// 
        public ReadOnlyObservableCollection(ObservableCollection list) : base(list)
        { 
            ((INotifyCollectionChanged)Items).CollectionChanged += new NotifyCollectionChangedEventHandler(HandleCollectionChanged);
            ((INotifyPropertyChanged)Items).PropertyChanged += new PropertyChangedEventHandler(HandlePropertyChanged); 
        } 

        #endregion Constructors 

        #region Interfaces

        //------------------------------------------------------ 
        //
        //  Interfaces 
        // 
        //-----------------------------------------------------
 
        #region INotifyCollectionChanged

        /// 
        /// CollectionChanged event (per ). 
        /// 
        event NotifyCollectionChangedEventHandler INotifyCollectionChanged.CollectionChanged 
        { 
            add     { CollectionChanged += value; }
            remove  { CollectionChanged -= value; } 
        }

        /// 
        /// Occurs when the collection changes, either by adding or removing an item. 
        /// 
        ///  
        /// see  
        /// 
        [field:NonSerializedAttribute()] 
        protected virtual event NotifyCollectionChangedEventHandler CollectionChanged;

        /// 
        /// raise CollectionChanged event to any listeners 
        /// 
        protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs args) 
        { 
            if (CollectionChanged != null)
            { 
                CollectionChanged(this, args);
            }
        }
 
        #endregion INotifyCollectionChanged
 
        #region INotifyPropertyChanged 

        ///  
        /// PropertyChanged event (per ).
        /// 
        event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
        { 
            add     { PropertyChanged += value; }
            remove  { PropertyChanged -= value; } 
        } 

        ///  
        /// Occurs when a property changes.
        /// 
        /// 
        /// see  
        /// 
        [field:NonSerializedAttribute()] 
        protected virtual event PropertyChangedEventHandler PropertyChanged; 

        ///  
        /// raise PropertyChanged event to any listeners
        /// 
        protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
        { 
            if (PropertyChanged != null)
            { 
                PropertyChanged(this, args); 
            }
        } 

        #endregion INotifyPropertyChanged

        #endregion Interfaces 

        #region Private Methods 
 
        //------------------------------------------------------
        // 
        //  Private Methods
        //
        //------------------------------------------------------
 
        // forward CollectionChanged events from the base list to our listeners
        void HandleCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
        { 
            OnCollectionChanged(e);
        } 

        // forward PropertyChanged events from the base list to our listeners
        void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
        { 
            OnPropertyChanged(e);
        } 
 
        #endregion Private Methods
 
        #region Private Fields

        //-----------------------------------------------------
        // 
        //  Private Fields
        // 
        //------------------------------------------------------ 

        #endregion Private Fields 
    }
}

 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK