Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Base / MS / Internal / InheritanceContextChangedEventManager.cs / 1 / 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) { // 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) { 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) { // 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) { 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
- AdornerLayer.cs
- QilDataSource.cs
- Rotation3DAnimationBase.cs
- ReflectPropertyDescriptor.cs
- ListViewGroupConverter.cs
- HiddenField.cs
- FakeModelPropertyImpl.cs
- WebException.cs
- VerificationAttribute.cs
- FunctionDetailsReader.cs
- SHA256.cs
- ImmutableCommunicationTimeouts.cs
- DecoderBestFitFallback.cs
- IPAddress.cs
- ClockGroup.cs
- WorkflowMarkupSerializationException.cs
- dataobject.cs
- SchemaCreator.cs
- CapabilitiesUse.cs
- ProgressPage.cs
- FormClosingEvent.cs
- ISFTagAndGuidCache.cs
- AppSettingsExpressionEditor.cs
- WithStatement.cs
- XsltContext.cs
- UrlRoutingModule.cs
- DesignerEditorPartChrome.cs
- AsymmetricKeyExchangeFormatter.cs
- Token.cs
- MimeReflector.cs
- BoundPropertyEntry.cs
- DoubleLinkList.cs
- Ports.cs
- HtmlToClrEventProxy.cs
- StrongNameKeyPair.cs
- IncrementalHitTester.cs
- ButtonStandardAdapter.cs
- WebConfigurationFileMap.cs
- HMAC.cs
- SpellCheck.cs
- __Error.cs
- Lease.cs
- BoundColumn.cs
- MimeTypePropertyAttribute.cs
- SaveLedgerEntryRequest.cs
- SessionState.cs
- DocumentReference.cs
- SchemaNamespaceManager.cs
- PageVisual.cs
- DataBinder.cs
- ColorKeyFrameCollection.cs
- Bits.cs
- DataGridTable.cs
- XmlReturnWriter.cs
- SQLDoubleStorage.cs
- MetadataArtifactLoaderCompositeResource.cs
- ListBoxChrome.cs
- PersonalizationStateInfo.cs
- SchemaMapping.cs
- OleDbCommand.cs
- BindingValueChangedEventArgs.cs
- Translator.cs
- SynchronizedCollection.cs
- FilterFactory.cs
- Executor.cs
- TextFindEngine.cs
- RolePrincipal.cs
- XmlDocumentSurrogate.cs
- ObjectKeyFrameCollection.cs
- HostExecutionContextManager.cs
- ToolStripDropDown.cs
- XmlCharacterData.cs
- srgsitem.cs
- StyleSelector.cs
- XmlAnyElementAttribute.cs
- ServiceOperationListItem.cs
- ProfileEventArgs.cs
- RenderingBiasValidation.cs
- ObjectSet.cs
- ClientTargetCollection.cs
- ColorAnimationBase.cs
- XmlSerializerSection.cs
- safex509handles.cs
- LockCookie.cs
- RectangleConverter.cs
- PackWebResponse.cs
- ObjectDataSourceEventArgs.cs
- followingsibling.cs
- PeerTransportCredentialType.cs
- FixedNode.cs
- ProfilePropertySettings.cs
- DataReaderContainer.cs
- PackWebResponse.cs
- UriParserTemplates.cs
- MetadataArtifactLoaderResource.cs
- ViewEvent.cs
- StoreAnnotationsMap.cs
- Resources.Designer.cs
- Pair.cs
- SqlServer2KCompatibilityCheck.cs