Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Base / System / Collections / Specialized / CollectionChangedEventManager.cs / 1 / 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)
{
CurrentManager.ProtectedAddListener(source, listener);
}
///
/// Remove a listener to the given source's event.
///
public static void RemoveListener(INotifyCollectionChanged source, IWeakEventListener 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)
{
CurrentManager.ProtectedAddListener(source, listener);
}
///
/// Remove a listener to the given source's event.
///
public static void RemoveListener(INotifyCollectionChanged source, IWeakEventListener 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
- ScrollItemPatternIdentifiers.cs
- ContainerParaClient.cs
- CardSpacePolicyElement.cs
- ObjectDataSourceSelectingEventArgs.cs
- ServiceSecurityAuditElement.cs
- MatrixAnimationBase.cs
- HtmlInputImage.cs
- RedirectionProxy.cs
- CounterSample.cs
- TemplatePropertyEntry.cs
- LogicalTreeHelper.cs
- Popup.cs
- DoubleLink.cs
- ModelItemExtensions.cs
- infer.cs
- TypeExtensionSerializer.cs
- WindowsListViewScroll.cs
- ConnectionPointGlyph.cs
- ByteKeyFrameCollection.cs
- QilLiteral.cs
- StylusCollection.cs
- Vector3DValueSerializer.cs
- ApplicationSecurityInfo.cs
- DbgUtil.cs
- DocumentViewerAutomationPeer.cs
- TabletDevice.cs
- ColumnWidthChangingEvent.cs
- X509Certificate2Collection.cs
- ServiceHostingEnvironment.cs
- HtmlInputText.cs
- WSSecurityOneDotZeroSendSecurityHeader.cs
- Endpoint.cs
- X509InitiatorCertificateClientElement.cs
- ResponseBodyWriter.cs
- AuthenticatedStream.cs
- HttpApplicationFactory.cs
- JpegBitmapEncoder.cs
- ColorInterpolationModeValidation.cs
- NCryptSafeHandles.cs
- FormsAuthenticationCredentials.cs
- XmlUrlResolver.cs
- Walker.cs
- NotifyIcon.cs
- baseaxisquery.cs
- DefaultValueAttribute.cs
- LazyTextWriterCreator.cs
- ActivityValidator.cs
- TextEvent.cs
- CounterCreationDataCollection.cs
- NamespaceListProperty.cs
- EdmEntityTypeAttribute.cs
- PriorityQueue.cs
- MexNamedPipeBindingElement.cs
- NameSpaceEvent.cs
- ServiceInfo.cs
- EmptyQuery.cs
- BindingCompleteEventArgs.cs
- PreviewControlDesigner.cs
- TargetPerspective.cs
- FrameworkObject.cs
- NonPrimarySelectionGlyph.cs
- SharedStatics.cs
- XmlSignatureProperties.cs
- QueueProcessor.cs
- TextEncodedRawTextWriter.cs
- OracleException.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- SQLByteStorage.cs
- BrowsableAttribute.cs
- ExpandedProjectionNode.cs
- AssemblyHash.cs
- EventArgs.cs
- HtmlTableRowCollection.cs
- PriorityItem.cs
- XmlLanguageConverter.cs
- DataGridViewLinkCell.cs
- AncestorChangedEventArgs.cs
- AppDomain.cs
- MasterPage.cs
- TileBrush.cs
- ResXResourceWriter.cs
- CookieHandler.cs
- HorizontalAlignConverter.cs
- IDataContractSurrogate.cs
- ObjectList.cs
- BooleanAnimationUsingKeyFrames.cs
- TextEditorDragDrop.cs
- NodeInfo.cs
- FormView.cs
- QilGenerator.cs
- HttpSessionStateWrapper.cs
- IdentityHolder.cs
- ISFTagAndGuidCache.cs
- DesignerActionMethodItem.cs
- TdsEnums.cs
- AxisAngleRotation3D.cs
- TransformDescriptor.cs
- COAUTHIDENTITY.cs
- Lock.cs
- EmptyEnumerable.cs