Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / MS / Internal / InheritanceContextHelper.cs / 1 / InheritanceContextHelper.cs
/****************************************************************************\ * * File: InheritanceContextHelper.cs * * This file holds a helper class for DO subclasses that implement an * inheritance context. * * Copyright (C) by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Windows; using MS.Internal.WindowsBase; namespace MS.Internal { internal static class InheritanceContextHelper { //------------------------------------------------------------------- // // ProvideContextForObject // // Tell a DO that it has a new inheritance context available. // //------------------------------------------------------------------- [FriendAccessAllowed] // Built into Core, also used by Framework. internal static void ProvideContextForObject( DependencyObject context, DependencyObject newValue ) { if (context != null) { context.ProvideSelfAsInheritanceContext(newValue, null); } } //------------------------------------------------------------------- // // RemoveContextFromObject // // Tell a DO that it has lost its inheritance context. // //-------------------------------------------------------------------- [FriendAccessAllowed] // Built into Base, also used by Framework. internal static void RemoveContextFromObject( DependencyObject context, DependencyObject oldValue ) { if (context != null && oldValue.InheritanceContext == context) { context.RemoveSelfAsInheritanceContext(oldValue, null); } } //------------------------------------------------------------------- // // AddInheritanceContext // // Implementation to receive a new inheritance context // //-------------------------------------------------------------------- [FriendAccessAllowed] // Built into Base, also used by Framework. internal static void AddInheritanceContext(DependencyObject newInheritanceContext, DependencyObject value, ref bool hasMultipleInheritanceContexts, ref DependencyObject inheritanceContext ) { // ignore the request when the new context is the same as the old, // or when there are already multiple contexts if (newInheritanceContext != inheritanceContext && !hasMultipleInheritanceContexts) { if (inheritanceContext == null || newInheritanceContext == null) { // Pick up the new context inheritanceContext = newInheritanceContext; } else { // We are now being referenced from multiple // places, clear the context hasMultipleInheritanceContexts = true; inheritanceContext = null; } value.OnInheritanceContextChanged(EventArgs.Empty); } } //-------------------------------------------------------------------- // // RemoveInheritanceContext // // Implementation to remove an old inheritance context // //------------------------------------------------------------------- [FriendAccessAllowed] // Built into Base, also used by Framework. internal static void RemoveInheritanceContext(DependencyObject oldInheritanceContext, DependencyObject value, ref bool hasMultipleInheritanceContexts, ref DependencyObject inheritanceContext ) { // ignore the request when the given context doesn't match the old one, // or when there are already multiple contexts if (oldInheritanceContext == inheritanceContext && !hasMultipleInheritanceContexts) { // clear the context inheritanceContext = null; value.OnInheritanceContextChanged(EventArgs.Empty); } } } } // 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
- EncryptedHeader.cs
- ErasingStroke.cs
- PackagePart.cs
- InertiaTranslationBehavior.cs
- Cloud.cs
- FileSystemInfo.cs
- CqlWriter.cs
- SelectionPatternIdentifiers.cs
- QueueProcessor.cs
- LightweightEntityWrapper.cs
- ContainerParagraph.cs
- EnlistmentState.cs
- SourceLineInfo.cs
- DNS.cs
- ICspAsymmetricAlgorithm.cs
- CssStyleCollection.cs
- ToggleButtonAutomationPeer.cs
- SqlConnectionHelper.cs
- ManagedIStream.cs
- MatrixTransform.cs
- WindowsSlider.cs
- SystemColors.cs
- StickyNoteHelper.cs
- SchemeSettingElement.cs
- RepeaterItemCollection.cs
- ConfigXmlCDataSection.cs
- UndirectedGraph.cs
- sitestring.cs
- SrgsElementFactoryCompiler.cs
- OperandQuery.cs
- VerificationAttribute.cs
- ToolboxItemSnapLineBehavior.cs
- HwndSourceParameters.cs
- XPathConvert.cs
- GACMembershipCondition.cs
- BamlResourceContent.cs
- ExpressionVisitor.cs
- NativeWindow.cs
- ViewGenResults.cs
- WebPartDescription.cs
- ManipulationLogic.cs
- Number.cs
- EntityContainerEntitySet.cs
- X509Certificate2Collection.cs
- SelectingProviderEventArgs.cs
- DispatcherSynchronizationContext.cs
- TogglePattern.cs
- HandledMouseEvent.cs
- MutexSecurity.cs
- DataRowChangeEvent.cs
- _ConnectionGroup.cs
- HandoffBehavior.cs
- IntPtr.cs
- OracleBoolean.cs
- BuildManagerHost.cs
- PointAnimationBase.cs
- PrefixQName.cs
- BounceEase.cs
- FilterQueryOptionExpression.cs
- SQLInt64Storage.cs
- X509Utils.cs
- RequestCacheManager.cs
- ApplicationFileParser.cs
- ClientConfigurationSystem.cs
- FileDialogCustomPlace.cs
- UnhandledExceptionEventArgs.cs
- ModuleConfigurationInfo.cs
- MDIClient.cs
- HandlerFactoryWrapper.cs
- _LocalDataStoreMgr.cs
- ListViewTableRow.cs
- URLMembershipCondition.cs
- AnnotationMap.cs
- Activator.cs
- ManagedWndProcTracker.cs
- HttpResponseHeader.cs
- KeyboardNavigation.cs
- CalendarButton.cs
- TextBoxBase.cs
- ExceptionRoutedEventArgs.cs
- ModelPropertyCollectionImpl.cs
- HttpBufferlessInputStream.cs
- MenuBase.cs
- Single.cs
- ProfileSection.cs
- DataGridViewElement.cs
- AnimatedTypeHelpers.cs
- mda.cs
- WebPartCancelEventArgs.cs
- EntityProxyFactory.cs
- SafeNativeMethodsOther.cs
- PathFigureCollection.cs
- milexports.cs
- FontSizeConverter.cs
- ApplicationId.cs
- EventSinkHelperWriter.cs
- IPeerNeighbor.cs
- Events.cs
- CharAnimationBase.cs
- HTMLTagNameToTypeMapper.cs