Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / 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. /****************************************************************************\ * * 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
- FormsAuthentication.cs
- DecoderReplacementFallback.cs
- ContourSegment.cs
- WebBrowserProgressChangedEventHandler.cs
- XmlComment.cs
- TextTreeDeleteContentUndoUnit.cs
- ExportException.cs
- storepermission.cs
- DbConnectionInternal.cs
- EnterpriseServicesHelper.cs
- FindCriteriaApril2005.cs
- Part.cs
- ProfileBuildProvider.cs
- CombinedGeometry.cs
- AlternateView.cs
- ConditionalBranch.cs
- DataGridCellsPresenter.cs
- AudioFormatConverter.cs
- HtmlControlPersistable.cs
- DataBoundControlParameterTarget.cs
- RenderTargetBitmap.cs
- NextPreviousPagerField.cs
- DataTableCollection.cs
- followingquery.cs
- COAUTHIDENTITY.cs
- Mutex.cs
- XmlIlGenerator.cs
- DrawingContextWalker.cs
- WindowsComboBox.cs
- DataGridColumnCollection.cs
- X509ChainPolicy.cs
- DoubleAnimationBase.cs
- TransactionManager.cs
- TableItemPatternIdentifiers.cs
- Membership.cs
- AncestorChangedEventArgs.cs
- XamlToRtfParser.cs
- ForeignConstraint.cs
- TraceSwitch.cs
- RuntimeResourceSet.cs
- SemanticAnalyzer.cs
- SurrogateEncoder.cs
- DetailsViewInsertedEventArgs.cs
- OutputScope.cs
- XmlCharCheckingWriter.cs
- AddressUtility.cs
- ClientSettingsStore.cs
- ServiceElementCollection.cs
- LineServicesCallbacks.cs
- FileDataSourceCache.cs
- DataBoundControlHelper.cs
- SecurityDescriptor.cs
- TrustSection.cs
- TextRange.cs
- HighlightComponent.cs
- DataGridViewCellEventArgs.cs
- Graphics.cs
- ColorAnimation.cs
- SlipBehavior.cs
- DataGridColumnEventArgs.cs
- NetCodeGroup.cs
- DoubleAnimationUsingKeyFrames.cs
- AuthenticationSection.cs
- SqlBinder.cs
- AssociationEndMember.cs
- ScrollPattern.cs
- SmtpSection.cs
- SqlInfoMessageEvent.cs
- KeysConverter.cs
- AxParameterData.cs
- InlineCollection.cs
- wmiprovider.cs
- InstanceNameConverter.cs
- XomlDesignerLoader.cs
- GCHandleCookieTable.cs
- DesignerInterfaces.cs
- DockAndAnchorLayout.cs
- ClientApiGenerator.cs
- CompositeCollection.cs
- WindowsImpersonationContext.cs
- SystemWebCachingSectionGroup.cs
- SystemMulticastIPAddressInformation.cs
- UxThemeWrapper.cs
- HttpException.cs
- Interlocked.cs
- PerformanceCounterPermissionEntry.cs
- UxThemeWrapper.cs
- ModelTreeEnumerator.cs
- Baml2006ReaderSettings.cs
- XmlChildNodes.cs
- PropertyDescriptor.cs
- MetadataLocation.cs
- ToolStripRenderEventArgs.cs
- Button.cs
- Binding.cs
- CatalogZoneBase.cs
- EntitySetBase.cs
- SoapSchemaExporter.cs
- ProxyGenerationError.cs
- Grammar.cs