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
- DeclaredTypeValidatorAttribute.cs
- PrePrepareMethodAttribute.cs
- NeutralResourcesLanguageAttribute.cs
- Tokenizer.cs
- CryptoSession.cs
- _ListenerAsyncResult.cs
- DefaultValueConverter.cs
- BrushValueSerializer.cs
- CellQuery.cs
- SqlUDTStorage.cs
- TypeSystem.cs
- DispatcherHooks.cs
- DecoderExceptionFallback.cs
- DataGridViewSelectedCellCollection.cs
- DbProviderServices.cs
- UserControlBuildProvider.cs
- DropShadowEffect.cs
- ItemCheckEvent.cs
- X509Extension.cs
- WinFormsUtils.cs
- CompositeActivityDesigner.cs
- MDIWindowDialog.cs
- BitmapEffectDrawingContextWalker.cs
- IdentityHolder.cs
- BitmapData.cs
- CanonicalFormWriter.cs
- Expression.cs
- SQLRoleProvider.cs
- SoapProcessingBehavior.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- KerberosSecurityTokenParameters.cs
- XmlSchemaAll.cs
- __Error.cs
- BaseConfigurationRecord.cs
- ConfigurationStrings.cs
- WebPartExportVerb.cs
- WorkflowViewService.cs
- ObjectCacheHost.cs
- XmlAttributeAttribute.cs
- EntityContainerRelationshipSet.cs
- GlyphRunDrawing.cs
- recordstatefactory.cs
- TypeHelpers.cs
- TextModifierScope.cs
- LocatorPartList.cs
- Base64Stream.cs
- InvalidEnumArgumentException.cs
- WorkflowApplicationUnloadedException.cs
- TextBlockAutomationPeer.cs
- OdbcHandle.cs
- OSFeature.cs
- srgsitem.cs
- path.cs
- RemoteWebConfigurationHostServer.cs
- IncomingWebRequestContext.cs
- QilNode.cs
- Ppl.cs
- CodeAssignStatement.cs
- MaterialGroup.cs
- MenuItemCollectionEditor.cs
- PrivateFontCollection.cs
- NativeConfigurationLoader.cs
- BrowserDefinitionCollection.cs
- SecurityPolicySection.cs
- IConvertible.cs
- ObjectKeyFrameCollection.cs
- PointKeyFrameCollection.cs
- InkCanvasSelectionAdorner.cs
- ForwardPositionQuery.cs
- PanningMessageFilter.cs
- ListDesigner.cs
- ActiveDocumentEvent.cs
- DecoratedNameAttribute.cs
- UIPropertyMetadata.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- ListViewDesigner.cs
- DotExpr.cs
- ToolStripDropDownItem.cs
- GreenMethods.cs
- DrawingContextDrawingContextWalker.cs
- SvcMapFileSerializer.cs
- XmlCDATASection.cs
- SystemIPAddressInformation.cs
- ProtectedConfigurationSection.cs
- ObjectDataSourceMethodEventArgs.cs
- dataobject.cs
- DocumentPageHost.cs
- RSAPKCS1SignatureFormatter.cs
- SrgsOneOf.cs
- FixedSOMElement.cs
- smtppermission.cs
- ObjectDataSourceFilteringEventArgs.cs
- PrincipalPermission.cs
- CodeDelegateInvokeExpression.cs
- SortKey.cs
- OutputCache.cs
- ButtonAutomationPeer.cs
- Pens.cs
- StrongNameIdentityPermission.cs
- MtomMessageEncoder.cs