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
- DispatcherEventArgs.cs
- OleDbError.cs
- HttpModuleActionCollection.cs
- MimeAnyImporter.cs
- AssignDesigner.xaml.cs
- WebPartVerbsEventArgs.cs
- FilteredAttributeCollection.cs
- ExitEventArgs.cs
- ScaleTransform3D.cs
- RequiredAttributeAttribute.cs
- GraphicsState.cs
- DSASignatureDeformatter.cs
- PasswordRecovery.cs
- WebMessageFormatHelper.cs
- CacheSection.cs
- CompilerWrapper.cs
- ThreadExceptionEvent.cs
- TreeBuilderBamlTranslator.cs
- SqlDataSource.cs
- SiteOfOriginContainer.cs
- VirtualPathUtility.cs
- LayoutTableCell.cs
- DataPagerFieldItem.cs
- WebPartVerb.cs
- EnumValidator.cs
- IListConverters.cs
- CodeTypeReferenceExpression.cs
- LabelAutomationPeer.cs
- AmbientLight.cs
- PagerSettings.cs
- SubMenuStyle.cs
- IfAction.cs
- DesignerProperties.cs
- RepeaterItem.cs
- BookmarkOptionsHelper.cs
- XmlSchemaImport.cs
- DefaultValueAttribute.cs
- PngBitmapEncoder.cs
- Parsers.cs
- BitmapEffectrendercontext.cs
- __Error.cs
- EventLogException.cs
- ContentPlaceHolder.cs
- EncryptRequest.cs
- RouteItem.cs
- Executor.cs
- SafeNativeMethodsCLR.cs
- ManualResetEvent.cs
- httpserverutility.cs
- DetailsViewRow.cs
- StandardOleMarshalObject.cs
- ProxyWebPartConnectionCollection.cs
- XmlWriter.cs
- ComponentEditorForm.cs
- SafeCancelMibChangeNotify.cs
- AssemblyCollection.cs
- ObjectContext.cs
- RectKeyFrameCollection.cs
- KeyGestureConverter.cs
- __Filters.cs
- ClientData.cs
- NullableLongMinMaxAggregationOperator.cs
- NamedPipeChannelFactory.cs
- initElementDictionary.cs
- VisualStyleElement.cs
- PowerStatus.cs
- IntegrationExceptionEventArgs.cs
- RouteItem.cs
- NonParentingControl.cs
- ToolStripSeparatorRenderEventArgs.cs
- TypeInitializationException.cs
- EpmSyndicationContentDeSerializer.cs
- WindowsListViewSubItem.cs
- RoleGroupCollection.cs
- XmlConvert.cs
- SqlDataRecord.cs
- PlatformCulture.cs
- SecurityCriticalDataForSet.cs
- Debug.cs
- ContainsRowNumberChecker.cs
- COM2Properties.cs
- XPathNodeInfoAtom.cs
- SqlCacheDependencySection.cs
- CapabilitiesSection.cs
- ProfilePropertySettingsCollection.cs
- PersonalizationProvider.cs
- CodeTypeParameterCollection.cs
- NegotiateStream.cs
- HttpApplicationFactory.cs
- ResourceKey.cs
- TemplateBamlRecordReader.cs
- GridItemPattern.cs
- ActiveDocumentEvent.cs
- AnnotationResourceCollection.cs
- RemotingSurrogateSelector.cs
- PropertyStore.cs
- TypeNameParser.cs
- ObjectStateEntry.cs
- GenericPrincipal.cs
- GridViewDeletedEventArgs.cs