Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // //// 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
- KeyEvent.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- FormsAuthenticationTicket.cs
- AnnotationService.cs
- ReservationCollection.cs
- MatrixAnimationUsingPath.cs
- FieldBuilder.cs
- RSACryptoServiceProvider.cs
- MarkupExtensionSerializer.cs
- DataServiceEntityAttribute.cs
- SchemaManager.cs
- InkCanvas.cs
- ExpandedWrapper.cs
- SqlTriggerAttribute.cs
- CatalogPartCollection.cs
- DocumentPageHost.cs
- ToolStripPanelCell.cs
- StylusCaptureWithinProperty.cs
- FormViewPageEventArgs.cs
- LogConverter.cs
- PhysicalAddress.cs
- FocusTracker.cs
- NavigateEvent.cs
- DrawingServices.cs
- WindowsSidIdentity.cs
- PaperSource.cs
- DocumentPageView.cs
- PropertyValidationContext.cs
- ResourceCategoryAttribute.cs
- SqlXml.cs
- BaseUriHelper.cs
- InstanceHandleConflictException.cs
- DataGridColumnDropSeparator.cs
- Glyph.cs
- ObjectConverter.cs
- VersionedStreamOwner.cs
- ConsoleTraceListener.cs
- DispatcherObject.cs
- StaticSiteMapProvider.cs
- SchemaReference.cs
- Helper.cs
- FileDataSourceCache.cs
- EncodingTable.cs
- PointCollectionConverter.cs
- CapabilitiesState.cs
- SessionStateSection.cs
- ProxyElement.cs
- WebPartCatalogAddVerb.cs
- ObjectCloneHelper.cs
- NotifyCollectionChangedEventArgs.cs
- Constraint.cs
- LineServicesCallbacks.cs
- BrushMappingModeValidation.cs
- MultiPageTextView.cs
- ToolStripDropDownClosingEventArgs.cs
- NumberEdit.cs
- TypeExtensionSerializer.cs
- SpellerInterop.cs
- SqlGatherProducedAliases.cs
- CachedCompositeFamily.cs
- ProcessInputEventArgs.cs
- KeyGestureConverter.cs
- TextElementCollectionHelper.cs
- PartBasedPackageProperties.cs
- PartitionResolver.cs
- ArrayList.cs
- ChangePassword.cs
- ApplicationFileParser.cs
- DataGridViewSortCompareEventArgs.cs
- SqlExpressionNullability.cs
- CodeTryCatchFinallyStatement.cs
- OrderPreservingPipeliningSpoolingTask.cs
- FixedFlowMap.cs
- WebPartUserCapability.cs
- shaper.cs
- HighlightVisual.cs
- SrgsSubset.cs
- DeferredReference.cs
- InterleavedZipPartStream.cs
- ManagedWndProcTracker.cs
- XPathItem.cs
- AppDomainProtocolHandler.cs
- WinEventWrap.cs
- Span.cs
- ResXBuildProvider.cs
- BrowsableAttribute.cs
- HttpCachePolicyElement.cs
- BrowserCapabilitiesCodeGenerator.cs
- HttpFileCollection.cs
- ControlBindingsConverter.cs
- PathSegment.cs
- RelationshipNavigation.cs
- basenumberconverter.cs
- WebPartCancelEventArgs.cs
- ThrowHelper.cs
- QueryStringParameter.cs
- Pkcs9Attribute.cs
- SqlClientWrapperSmiStreamChars.cs
- BufferCache.cs
- DbDataReader.cs