Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / System / Collections / Specialized / CollectionChangedEventManager.cs / 1305600 / CollectionChangedEventManager.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Manager for the CollectionChanged event in the "weak event listener"
// pattern. See WeakEventTable.cs for an overview.
//
//---------------------------------------------------------------------------
using System;
using System.Windows; // WeakEventManager
namespace System.Collections.Specialized
{
///
/// Manager for the INotifyCollectionChanged.CollectionChanged event.
///
public class CollectionChangedEventManager : WeakEventManager
{
#region Constructors
//
// Constructors
//
private CollectionChangedEventManager()
{
}
#endregion Constructors
#region Public Methods
//
// Public Methods
//
///
/// Add a listener to the given source's event.
///
public static void AddListener(INotifyCollectionChanged source, IWeakEventListener listener)
{
if (source == null)
throw new ArgumentNullException("source");
if (listener == null)
throw new ArgumentNullException("listener");
CurrentManager.ProtectedAddListener(source, listener);
}
///
/// Remove a listener to the given source's event.
///
public static void RemoveListener(INotifyCollectionChanged source, IWeakEventListener listener)
{
/* for app-compat, allow RemoveListener(null, x) - it's a no-op (see Dev10 796788)
if (source == null)
throw new ArgumentNullException("source");
*/
if (listener == null)
throw new ArgumentNullException("listener");
CurrentManager.ProtectedRemoveListener(source, listener);
}
#endregion Public Methods
#region Protected Methods
//
// Protected Methods
//
///
/// Listen to the given source for the event.
///
protected override void StartListening(object source)
{
INotifyCollectionChanged typedSource = (INotifyCollectionChanged)source;
typedSource.CollectionChanged += new NotifyCollectionChangedEventHandler(OnCollectionChanged);
}
///
/// Stop listening to the given source for the event.
///
protected override void StopListening(object source)
{
INotifyCollectionChanged typedSource = (INotifyCollectionChanged)source;
typedSource.CollectionChanged -= new NotifyCollectionChangedEventHandler(OnCollectionChanged);
}
#endregion Protected Methods
#region Private Properties
//
// Private Properties
//
// get the event manager for the current thread
private static CollectionChangedEventManager CurrentManager
{
get
{
Type managerType = typeof(CollectionChangedEventManager);
CollectionChangedEventManager manager = (CollectionChangedEventManager)GetCurrentManager(managerType);
// at first use, create and register a new manager
if (manager == null)
{
manager = new CollectionChangedEventManager();
SetCurrentManager(managerType, manager);
}
return manager;
}
}
#endregion Private Properties
#region Private Methods
//
// Private Methods
//
// event handler for CollectionChanged event
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
DeliverEvent(sender, args);
}
#endregion Private Methods
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Manager for the CollectionChanged event in the "weak event listener"
// pattern. See WeakEventTable.cs for an overview.
//
//---------------------------------------------------------------------------
using System;
using System.Windows; // WeakEventManager
namespace System.Collections.Specialized
{
///
/// Manager for the INotifyCollectionChanged.CollectionChanged event.
///
public class CollectionChangedEventManager : WeakEventManager
{
#region Constructors
//
// Constructors
//
private CollectionChangedEventManager()
{
}
#endregion Constructors
#region Public Methods
//
// Public Methods
//
///
/// Add a listener to the given source's event.
///
public static void AddListener(INotifyCollectionChanged source, IWeakEventListener listener)
{
if (source == null)
throw new ArgumentNullException("source");
if (listener == null)
throw new ArgumentNullException("listener");
CurrentManager.ProtectedAddListener(source, listener);
}
///
/// Remove a listener to the given source's event.
///
public static void RemoveListener(INotifyCollectionChanged source, IWeakEventListener listener)
{
/* for app-compat, allow RemoveListener(null, x) - it's a no-op (see Dev10 796788)
if (source == null)
throw new ArgumentNullException("source");
*/
if (listener == null)
throw new ArgumentNullException("listener");
CurrentManager.ProtectedRemoveListener(source, listener);
}
#endregion Public Methods
#region Protected Methods
//
// Protected Methods
//
///
/// Listen to the given source for the event.
///
protected override void StartListening(object source)
{
INotifyCollectionChanged typedSource = (INotifyCollectionChanged)source;
typedSource.CollectionChanged += new NotifyCollectionChangedEventHandler(OnCollectionChanged);
}
///
/// Stop listening to the given source for the event.
///
protected override void StopListening(object source)
{
INotifyCollectionChanged typedSource = (INotifyCollectionChanged)source;
typedSource.CollectionChanged -= new NotifyCollectionChangedEventHandler(OnCollectionChanged);
}
#endregion Protected Methods
#region Private Properties
//
// Private Properties
//
// get the event manager for the current thread
private static CollectionChangedEventManager CurrentManager
{
get
{
Type managerType = typeof(CollectionChangedEventManager);
CollectionChangedEventManager manager = (CollectionChangedEventManager)GetCurrentManager(managerType);
// at first use, create and register a new manager
if (manager == null)
{
manager = new CollectionChangedEventManager();
SetCurrentManager(managerType, manager);
}
return manager;
}
}
#endregion Private Properties
#region Private Methods
//
// Private Methods
//
// event handler for CollectionChanged event
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
DeliverEvent(sender, args);
}
#endregion Private Methods
}
}
// 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
- SrgsToken.cs
- Enumerable.cs
- PerfCounters.cs
- SiteMembershipCondition.cs
- TreeNodeBinding.cs
- BulletedListEventArgs.cs
- SymbolEqualComparer.cs
- HttpRequestCacheValidator.cs
- AsnEncodedData.cs
- NestPullup.cs
- DataGridBoolColumn.cs
- NavigationWindowAutomationPeer.cs
- DoubleLinkListEnumerator.cs
- XmlILOptimizerVisitor.cs
- PackagingUtilities.cs
- BamlRecords.cs
- TraceHandler.cs
- WebPartZoneAutoFormat.cs
- StrokeNode.cs
- Journaling.cs
- UrlMappingsModule.cs
- QilBinary.cs
- SystemGatewayIPAddressInformation.cs
- ToolstripProfessionalRenderer.cs
- SessionState.cs
- RadioButton.cs
- PrintPreviewGraphics.cs
- ForwardPositionQuery.cs
- AuthenticationModuleElement.cs
- SerialErrors.cs
- ListBase.cs
- TrustManagerPromptUI.cs
- DataServiceRequest.cs
- ConfigXmlComment.cs
- Viewport3DAutomationPeer.cs
- DispatcherHookEventArgs.cs
- IIS7WorkerRequest.cs
- Relationship.cs
- MulticastDelegate.cs
- PenThreadPool.cs
- HtmlElementEventArgs.cs
- TileBrush.cs
- CanExpandCollapseAllConverter.cs
- ReverseInheritProperty.cs
- SuppressIldasmAttribute.cs
- EntityViewGenerationConstants.cs
- PersonalizationStateQuery.cs
- StylusPointCollection.cs
- TcpActivation.cs
- TransformGroup.cs
- UriTemplateVariablePathSegment.cs
- URLString.cs
- Odbc32.cs
- FixedPageProcessor.cs
- log.cs
- Pair.cs
- BindingNavigator.cs
- SqlGatherConsumedAliases.cs
- GZipDecoder.cs
- FormatSettings.cs
- PropertyRecord.cs
- MediaContextNotificationWindow.cs
- Helpers.cs
- ScrollViewer.cs
- NextPreviousPagerField.cs
- ChangePassword.cs
- TraceRecord.cs
- ApplicationBuildProvider.cs
- DispatcherFrame.cs
- DrawingContextDrawingContextWalker.cs
- MessageEventSubscriptionService.cs
- FileNotFoundException.cs
- X509Certificate.cs
- SelectedDatesCollection.cs
- TrackPointCollection.cs
- UriWriter.cs
- SizeFConverter.cs
- WindowsComboBox.cs
- StylusEditingBehavior.cs
- BitArray.cs
- FixedSOMPageConstructor.cs
- UIElement3D.cs
- ComponentChangedEvent.cs
- DesignTimeHTMLTextWriter.cs
- _UriSyntax.cs
- SecurityPolicySection.cs
- WrappedKeySecurityToken.cs
- MergablePropertyAttribute.cs
- ClientConfigurationSystem.cs
- SettingsPropertyWrongTypeException.cs
- PenLineCapValidation.cs
- Main.cs
- IsolatedStorageFileStream.cs
- LinearKeyFrames.cs
- XmlNodeWriter.cs
- TransformerInfo.cs
- XmlSchemaSimpleContentExtension.cs
- ModelVisual3D.cs
- AssertHelper.cs
- DataTransferEventArgs.cs