Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Data / DataChangedEventManager.cs / 1305600 / DataChangedEventManager.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Manager for the DataChanged event in the "weak event listener"
// pattern. See WeakEventTable.cs for an overview.
//
//---------------------------------------------------------------------------
using System;
using System.Windows; // WeakEventManager
namespace System.Windows.Data
{
///
/// Manager for the DataSourceProvider.DataChanged event.
///
public class DataChangedEventManager : WeakEventManager
{
#region Constructors
//
// Constructors
//
private DataChangedEventManager()
{
}
#endregion Constructors
#region Public Methods
//
// Public Methods
//
///
/// Add a listener to the given source's event.
///
public static void AddListener(DataSourceProvider 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(DataSourceProvider 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)
{
DataSourceProvider typedSource = (DataSourceProvider)source;
typedSource.DataChanged += new EventHandler(OnDataChanged);
}
///
/// Stop listening to the given source for the event.
///
protected override void StopListening(object source)
{
DataSourceProvider typedSource = (DataSourceProvider)source;
typedSource.DataChanged -= new EventHandler(OnDataChanged);
}
#endregion Protected Methods
#region Private Properties
//
// Private Properties
//
// get the event manager for the current thread
private static DataChangedEventManager CurrentManager
{
get
{
Type managerType = typeof(DataChangedEventManager);
DataChangedEventManager manager = (DataChangedEventManager)GetCurrentManager(managerType);
// at first use, create and register a new manager
if (manager == null)
{
manager = new DataChangedEventManager();
SetCurrentManager(managerType, manager);
}
return manager;
}
}
#endregion Private Properties
#region Private Methods
//
// Private Methods
//
// event handler for DataChanged event
private void OnDataChanged(object sender, EventArgs 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
- CustomAttributeFormatException.cs
- DnsPermission.cs
- Confirm.cs
- FormsAuthenticationEventArgs.cs
- VoiceInfo.cs
- VersionedStream.cs
- SatelliteContractVersionAttribute.cs
- XmlNullResolver.cs
- DeferredReference.cs
- InfoCardProofToken.cs
- IxmlLineInfo.cs
- TemplateField.cs
- ZipIOExtraFieldPaddingElement.cs
- KnownTypesHelper.cs
- FirewallWrapper.cs
- webproxy.cs
- LambdaCompiler.Statements.cs
- DesignerDataView.cs
- XmlEntity.cs
- BaseDataBoundControl.cs
- ObjRef.cs
- XsltConvert.cs
- TransformerTypeCollection.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- PropertyItem.cs
- mactripleDES.cs
- PasswordRecoveryDesigner.cs
- ThemeableAttribute.cs
- MachineKey.cs
- TransformGroup.cs
- DoubleCollectionValueSerializer.cs
- InertiaRotationBehavior.cs
- CodeMethodReturnStatement.cs
- FlowLayoutSettings.cs
- TemplateBindingExtensionConverter.cs
- MulticastOption.cs
- ChangeInterceptorAttribute.cs
- ISAPIApplicationHost.cs
- fixedPageContentExtractor.cs
- TimeSpan.cs
- HttpCachePolicyBase.cs
- Mapping.cs
- ApplicationCommands.cs
- SingleAnimationBase.cs
- ImmutableClientRuntime.cs
- ClickablePoint.cs
- DesignerDeviceConfig.cs
- RealizationContext.cs
- ExpiredSecurityTokenException.cs
- BitmapEffectRenderDataResource.cs
- OdbcConnectionHandle.cs
- IBuiltInEvidence.cs
- PtsHelper.cs
- NotImplementedException.cs
- TcpConnectionPoolSettings.cs
- StylusPointDescription.cs
- MaskInputRejectedEventArgs.cs
- DecimalAnimationUsingKeyFrames.cs
- BindingListCollectionView.cs
- Internal.cs
- ImageBrush.cs
- TreeViewAutomationPeer.cs
- ContourSegment.cs
- SecurityPolicySection.cs
- TableRow.cs
- GatewayIPAddressInformationCollection.cs
- HttpCachePolicyElement.cs
- ButtonRenderer.cs
- ToolStripSeparator.cs
- ContentControl.cs
- SqlUserDefinedTypeAttribute.cs
- AsyncContentLoadedEventArgs.cs
- SafeRegistryKey.cs
- RequestQueryProcessor.cs
- XamlClipboardData.cs
- ComponentConverter.cs
- QueryResults.cs
- HwndAppCommandInputProvider.cs
- Emitter.cs
- DataListCommandEventArgs.cs
- DeferredElementTreeState.cs
- Facet.cs
- NetworkInterface.cs
- SpellerInterop.cs
- RedistVersionInfo.cs
- ByteStreamGeometryContext.cs
- PopupEventArgs.cs
- CurrentChangingEventManager.cs
- SQLBinaryStorage.cs
- LassoSelectionBehavior.cs
- EntityDataSource.cs
- RtfNavigator.cs
- OleDbWrapper.cs
- HostUtils.cs
- EdmFunction.cs
- RepeaterItemCollection.cs
- WebSysDescriptionAttribute.cs
- SmtpException.cs
- DrawListViewColumnHeaderEventArgs.cs
- ObjRef.cs