Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / InheritanceContextChangedEventManager.cs / 1305600 / InheritanceContextChangedEventManager.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Manager for the InheritanceContextChanged event in the "weak event listener"
// pattern. See WeakEventTable.cs for an overview.
//
//---------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows; // WeakEventManager
using MS.Internal.WindowsBase; // [FriendAccessAllowed]
namespace MS.Internal
{
///
/// Manager for the DependencyObject.InheritanceContextChanged event.
///
[FriendAccessAllowed]
internal class InheritanceContextChangedEventManager : WeakEventManager
{
#region Constructors
//
// Constructors
//
private InheritanceContextChangedEventManager()
{
}
#endregion Constructors
#region Public Methods
//
// Public Methods
//
///
/// Add a listener to the given source's event.
///
public static void AddListener(DependencyObject source, IWeakEventListener listener)
{
if (source == null)
throw new ArgumentNullException("source");
if (listener == null)
throw new ArgumentNullException("listener");
// Freezable.Freeze() relies on the assumption that a frozen Freezable
// has no listeners. This is because Freeze() fails if the Freezable
// has any Expressions on it, and only Expressions ever listen
// to the InheritanceContextChanged event.
Debug.Assert(listener is Expression);
CurrentManager.ProtectedAddListener(source, listener);
}
///
/// Remove a listener to the given source's event.
///
public static void RemoveListener(DependencyObject source, IWeakEventListener listener)
{
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)
{
DependencyObject typedSource = (DependencyObject)source;
typedSource.InheritanceContextChanged += new EventHandler(OnInheritanceContextChanged);
}
///
/// Stop listening to the given source for the event.
///
protected override void StopListening(object source)
{
DependencyObject typedSource = (DependencyObject)source;
typedSource.InheritanceContextChanged -= new EventHandler(OnInheritanceContextChanged);
}
#endregion Protected Methods
#region Private Properties
//
// Private Properties
//
// get the event manager for the current thread
private static InheritanceContextChangedEventManager CurrentManager
{
get
{
Type managerType = typeof(InheritanceContextChangedEventManager);
InheritanceContextChangedEventManager manager = (InheritanceContextChangedEventManager)GetCurrentManager(managerType);
// at first use, create and register a new manager
if (manager == null)
{
manager = new InheritanceContextChangedEventManager();
SetCurrentManager(managerType, manager);
}
return manager;
}
}
#endregion Private Properties
#region Private Methods
//
// Private Methods
//
// event handler for InheritanceContextChanged event
private void OnInheritanceContextChanged(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
- cookie.cs
- RelatedPropertyManager.cs
- DataView.cs
- FtpWebResponse.cs
- X509Extension.cs
- TimelineCollection.cs
- ActivityScheduledRecord.cs
- ApplicationHost.cs
- WindowsListViewGroup.cs
- PageStatePersister.cs
- PropertyBuilder.cs
- CriticalHandle.cs
- TextBoxAutomationPeer.cs
- FixedSOMSemanticBox.cs
- FlowLayoutPanel.cs
- FilterableAttribute.cs
- LocationFactory.cs
- SrgsElementList.cs
- XamlInt32CollectionSerializer.cs
- AppDomainCompilerProxy.cs
- Viewport3DVisual.cs
- DataGridViewBindingCompleteEventArgs.cs
- TableFieldsEditor.cs
- PassportPrincipal.cs
- DefaultDialogButtons.cs
- SchemaCollectionPreprocessor.cs
- MaskInputRejectedEventArgs.cs
- WebServiceClientProxyGenerator.cs
- SystemPens.cs
- FontCollection.cs
- WebExceptionStatus.cs
- MultiView.cs
- Vector3DAnimationBase.cs
- XmlHierarchicalEnumerable.cs
- RefExpr.cs
- TreeNodeStyle.cs
- DynamicDocumentPaginator.cs
- HttpConfigurationContext.cs
- Int64Converter.cs
- ChildDocumentBlock.cs
- SafeEventHandle.cs
- Exceptions.cs
- TimeSpanSecondsConverter.cs
- ShaderEffect.cs
- DescendantBaseQuery.cs
- RangeValidator.cs
- VisualStyleElement.cs
- MimeReflector.cs
- GcSettings.cs
- SharedConnectionWorkflowTransactionService.cs
- MarkerProperties.cs
- ContractUtils.cs
- FileClassifier.cs
- BinaryMethodMessage.cs
- GridViewDeleteEventArgs.cs
- NopReturnReader.cs
- HtmlTableCellCollection.cs
- ClientTargetCollection.cs
- DynamicPhysicalDiscoSearcher.cs
- TreeViewBindingsEditor.cs
- ScrollItemProviderWrapper.cs
- QualificationDataAttribute.cs
- DesignerCapabilities.cs
- TableLayoutStyleCollection.cs
- RadioButtonFlatAdapter.cs
- XmlElementList.cs
- OleDbEnumerator.cs
- WebConfigurationFileMap.cs
- SmtpReplyReaderFactory.cs
- SoapFault.cs
- TypeUnloadedException.cs
- EntityType.cs
- ManipulationStartingEventArgs.cs
- PersonalizationProviderHelper.cs
- XPathExpr.cs
- SelectionPattern.cs
- ISessionStateStore.cs
- CodeGeneratorOptions.cs
- BitmapEffectDrawingContextState.cs
- Compiler.cs
- Set.cs
- ConfigUtil.cs
- SocketAddress.cs
- NotifyCollectionChangedEventArgs.cs
- StringFreezingAttribute.cs
- TypeLoadException.cs
- HtmlMeta.cs
- CounterCreationDataCollection.cs
- PackageDigitalSignatureManager.cs
- SimpleApplicationHost.cs
- BaseUriHelper.cs
- DnsEndpointIdentity.cs
- NonValidatingSecurityTokenAuthenticator.cs
- MasterPage.cs
- AsyncOperationManager.cs
- CodeExpressionCollection.cs
- AsymmetricSignatureFormatter.cs
- CatalogPart.cs
- HandlerFactoryCache.cs
- EditorAttribute.cs