Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- PageTextBox.cs
- graph.cs
- HttpResponseHeader.cs
- BaseComponentEditor.cs
- UnaryNode.cs
- _PooledStream.cs
- DesignerProperties.cs
- SqlParameter.cs
- BoundColumn.cs
- EntityDataReader.cs
- PrePrepareMethodAttribute.cs
- URLIdentityPermission.cs
- AuthenticationConfig.cs
- GeneralTransform3DCollection.cs
- BitmapEffectGroup.cs
- EdmMember.cs
- RowType.cs
- BinaryFormatter.cs
- HostDesigntimeLicenseContext.cs
- CaseInsensitiveComparer.cs
- KeyInterop.cs
- DataGridViewComboBoxColumn.cs
- SessionSwitchEventArgs.cs
- RightsManagementEncryptionTransform.cs
- FormViewUpdateEventArgs.cs
- InputChannelBinder.cs
- PolyBezierSegment.cs
- ExpressionLexer.cs
- RegexCaptureCollection.cs
- PartialClassGenerationTask.cs
- ThreadStartException.cs
- SynchronizedMessageSource.cs
- AuthenticationModulesSection.cs
- DataGridItem.cs
- XmlNode.cs
- TempFiles.cs
- CompilationUnit.cs
- TextServicesCompartmentEventSink.cs
- Camera.cs
- CanonicalFontFamilyReference.cs
- HierarchicalDataBoundControl.cs
- WindowsGraphics.cs
- WindowsTab.cs
- GPStream.cs
- ServicePoint.cs
- EntityDesignerDataSourceView.cs
- DataPagerCommandEventArgs.cs
- ToolStripItemRenderEventArgs.cs
- WebPartTransformer.cs
- PathData.cs
- COM2ColorConverter.cs
- ExpressionBuilderCollection.cs
- WorkflowQueueInfo.cs
- Frame.cs
- COM2PropertyDescriptor.cs
- NullableBoolConverter.cs
- BulletChrome.cs
- UserMapPath.cs
- DBConcurrencyException.cs
- Buffer.cs
- SoapAttributeAttribute.cs
- LicenseManager.cs
- PropertyStore.cs
- ColumnHeader.cs
- Or.cs
- FrameworkRichTextComposition.cs
- XmlSecureResolver.cs
- ToolboxComponentsCreatingEventArgs.cs
- Stacktrace.cs
- InternalRelationshipCollection.cs
- ExpressionBuilderContext.cs
- CodeExporter.cs
- DataError.cs
- TimeSpan.cs
- SmuggledIUnknown.cs
- ProfileManager.cs
- DetailsView.cs
- CollectionViewGroup.cs
- SeparatorAutomationPeer.cs
- ItemCollectionEditor.cs
- ObjectHelper.cs
- Buffer.cs
- HMACSHA1.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- StringConcat.cs
- listitem.cs
- MultiAsyncResult.cs
- HuffModule.cs
- SqlCommand.cs
- DesignerToolboxInfo.cs
- IdentityManager.cs
- JpegBitmapEncoder.cs
- MetadataItem.cs
- AccessDataSource.cs
- DiscoveryClientOutputChannel.cs
- BitArray.cs
- StateRuntime.cs
- IProvider.cs
- ImmComposition.cs
- HMAC.cs