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
- QueryOutputWriterV1.cs
- ExecutionContext.cs
- SmiRequestExecutor.cs
- Substitution.cs
- WindowsFormsLinkLabel.cs
- HttpCapabilitiesBase.cs
- AddInSegmentDirectoryNotFoundException.cs
- ResourceReferenceExpression.cs
- CodeExpressionStatement.cs
- ModuleElement.cs
- DSASignatureDeformatter.cs
- HandlerWithFactory.cs
- DockAndAnchorLayout.cs
- PerformanceCounters.cs
- EventLogException.cs
- IList.cs
- ThreadStartException.cs
- XmlMtomWriter.cs
- BorderGapMaskConverter.cs
- DelegatedStream.cs
- DataBindEngine.cs
- ListViewDataItem.cs
- NestPullup.cs
- SkipQueryOptionExpression.cs
- ILGen.cs
- ExpressionEvaluator.cs
- baseaxisquery.cs
- ReferenceConverter.cs
- MenuBase.cs
- DataGridState.cs
- SocketException.cs
- PageParser.cs
- DataFieldConverter.cs
- XmlQueryRuntime.cs
- PageAsyncTask.cs
- EntityWithChangeTrackerStrategy.cs
- ImageListDesigner.cs
- ConfigXmlDocument.cs
- InvokeProviderWrapper.cs
- DbProviderManifest.cs
- FacetChecker.cs
- BindingContext.cs
- XPathNodeIterator.cs
- ColumnPropertiesGroup.cs
- VideoDrawing.cs
- TextReader.cs
- OperationAbortedException.cs
- HtmlElementCollection.cs
- DiscreteKeyFrames.cs
- AddInToken.cs
- XmlParserContext.cs
- SafeHandles.cs
- StateMachineDesignerPaint.cs
- QueryPageSettingsEventArgs.cs
- Int64.cs
- VirtualDirectoryMappingCollection.cs
- AvTraceDetails.cs
- XPathChildIterator.cs
- WebAdminConfigurationHelper.cs
- StatusStrip.cs
- ToolStripSettings.cs
- IsolatedStorageFileStream.cs
- RpcCryptoContext.cs
- DataShape.cs
- TCPClient.cs
- LingerOption.cs
- DispatcherTimer.cs
- HttpClientChannel.cs
- ButtonChrome.cs
- XPathParser.cs
- HttpProfileGroupBase.cs
- EntityStoreSchemaGenerator.cs
- ConfigXmlText.cs
- NavigationWindowAutomationPeer.cs
- SimpleHandlerBuildProvider.cs
- BCLDebug.cs
- _AutoWebProxyScriptEngine.cs
- ButtonRenderer.cs
- XmlSchemaObjectTable.cs
- ActivityIdHeader.cs
- CircleEase.cs
- JsonServiceDocumentSerializer.cs
- RenderCapability.cs
- HitTestParameters3D.cs
- Triplet.cs
- DefaultObjectMappingItemCollection.cs
- X509RawDataKeyIdentifierClause.cs
- Crc32.cs
- MarkupCompiler.cs
- SymbolMethod.cs
- SafePEFileHandle.cs
- FileDialogCustomPlaces.cs
- ExceptionHandlers.cs
- MediaContextNotificationWindow.cs
- CompositeDataBoundControl.cs
- XmlSchemaGroup.cs
- WindowsGraphics.cs
- ConfigXmlDocument.cs
- PagerSettings.cs
- ButtonField.cs