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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ThousandthOfEmRealPoints.cs
- TeredoHelper.cs
- ProcessHost.cs
- CodePageEncoding.cs
- PropertyGrid.cs
- KeyedCollection.cs
- PatternMatcher.cs
- httpapplicationstate.cs
- DropSourceBehavior.cs
- AssemblyGen.cs
- Material.cs
- Variant.cs
- SqlConnectionFactory.cs
- FormConverter.cs
- DetailsViewPagerRow.cs
- DataServiceProviderWrapper.cs
- SecurityVersion.cs
- FileDialog_Vista_Interop.cs
- ResXResourceReader.cs
- SvcFileManager.cs
- SafeNativeMethods.cs
- ConsoleCancelEventArgs.cs
- ItemCheckedEvent.cs
- XPathBuilder.cs
- AdornerHitTestResult.cs
- ZipIOCentralDirectoryBlock.cs
- DataSourceControl.cs
- WebRequestModuleElement.cs
- MoveSizeWinEventHandler.cs
- ProfessionalColors.cs
- DbModificationClause.cs
- DataServiceQueryProvider.cs
- DbConvert.cs
- BidOverLoads.cs
- JsonFormatWriterGenerator.cs
- ToolStripProgressBar.cs
- ParallelTimeline.cs
- UIElementParagraph.cs
- Size.cs
- ServicePointManager.cs
- ConstraintCollection.cs
- ChannelPool.cs
- CommonProperties.cs
- TextBox.cs
- TrailingSpaceComparer.cs
- CompilerResults.cs
- InputProcessorProfilesLoader.cs
- BaseDataBoundControl.cs
- InteropExecutor.cs
- BitmapFrame.cs
- RightsManagementEncryptionTransform.cs
- RecommendedAsConfigurableAttribute.cs
- ObjectItemAttributeAssemblyLoader.cs
- HttpAsyncResult.cs
- DrawingGroup.cs
- ValidationSummary.cs
- XmlBinaryReader.cs
- GetLedgerEntryForRecipientRequest.cs
- CodeNamespaceCollection.cs
- RegexRunner.cs
- LogSwitch.cs
- OrderedHashRepartitionStream.cs
- ExecutedRoutedEventArgs.cs
- IriParsingElement.cs
- DurableOperationContext.cs
- UnsafeNativeMethodsPenimc.cs
- cookieexception.cs
- PasswordDeriveBytes.cs
- MetadataUtil.cs
- ShutDownListener.cs
- WebRequestModulesSection.cs
- BitmapSourceSafeMILHandle.cs
- HtmlInputHidden.cs
- CatalogPartChrome.cs
- QueryParameter.cs
- ToolStripManager.cs
- SystemInformation.cs
- Queue.cs
- Translator.cs
- InvalidDataException.cs
- BinaryObjectInfo.cs
- TypeSystem.cs
- PathGeometry.cs
- NativeMethods.cs
- MergeFilterQuery.cs
- HwndKeyboardInputProvider.cs
- SymmetricKey.cs
- ListGeneralPage.cs
- CodeNamespaceImport.cs
- ResourceType.cs
- Transform.cs
- ContentElementAutomationPeer.cs
- IPAddressCollection.cs
- AndCondition.cs
- UnknownBitmapDecoder.cs
- CqlParserHelpers.cs
- FormatConvertedBitmap.cs
- WCFServiceClientProxyGenerator.cs
- Package.cs
- XmlSchemaRedefine.cs