Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / InheritanceContextHelper.cs / 1305600 / 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
- DocumentViewer.cs
- FixedSOMImage.cs
- DetailsViewInsertedEventArgs.cs
- SafeWaitHandle.cs
- OdbcConnectionFactory.cs
- WebPartConnectionCollection.cs
- InputLangChangeRequestEvent.cs
- DropDownButton.cs
- GPRECT.cs
- EdgeModeValidation.cs
- MenuItemStyle.cs
- X509Extension.cs
- TextServicesCompartmentContext.cs
- DesignBindingPropertyDescriptor.cs
- EntityClassGenerator.cs
- SupportingTokenChannel.cs
- MenuBase.cs
- MsmqIntegrationProcessProtocolHandler.cs
- PassportPrincipal.cs
- PriorityQueue.cs
- FixedSOMGroup.cs
- MdbDataFileEditor.cs
- RangeValuePattern.cs
- RawTextInputReport.cs
- InputReferenceExpression.cs
- CssStyleCollection.cs
- HttpFileCollection.cs
- OutputCacheSettings.cs
- ServiceModelConfiguration.cs
- ServiceContractGenerationContext.cs
- StopStoryboard.cs
- DefaultParameterValueAttribute.cs
- MimeMultiPart.cs
- XamlPoint3DCollectionSerializer.cs
- CorrelationManager.cs
- Invariant.cs
- UInt16Converter.cs
- MetadataSet.cs
- TextElementEditingBehaviorAttribute.cs
- PropertyValidationContext.cs
- RoutedEventConverter.cs
- MultiView.cs
- StandardCommands.cs
- MetaModel.cs
- ForceCopyBuildProvider.cs
- FlowDocumentPageViewerAutomationPeer.cs
- EditorOptionAttribute.cs
- CodeVariableReferenceExpression.cs
- xsdvalidator.cs
- DefaultPropertyAttribute.cs
- DesignTimeTemplateParser.cs
- DiffuseMaterial.cs
- safex509handles.cs
- MetadataArtifactLoaderCompositeResource.cs
- DataServiceRequestException.cs
- OraclePermissionAttribute.cs
- EdmSchemaAttribute.cs
- JavaScriptObjectDeserializer.cs
- DataGridViewCellValidatingEventArgs.cs
- BamlRecordReader.cs
- EasingKeyFrames.cs
- XmlQueryRuntime.cs
- PolicyStatement.cs
- RtfControls.cs
- SyndicationFeed.cs
- ToolStripOverflow.cs
- MimeFormatter.cs
- ObjectTag.cs
- PriorityChain.cs
- WindowsTab.cs
- PersonalizationStateInfo.cs
- OpenTypeLayoutCache.cs
- NavigatingCancelEventArgs.cs
- TreeViewImageKeyConverter.cs
- DataRelationPropertyDescriptor.cs
- ToolboxItemImageConverter.cs
- InputBinding.cs
- Adorner.cs
- SiteOfOriginContainer.cs
- SingleObjectCollection.cs
- MessageQueueException.cs
- ReaderWriterLockWrapper.cs
- VariableQuery.cs
- KeyedQueue.cs
- ObjectDataSourceDisposingEventArgs.cs
- StaticTextPointer.cs
- designeractionlistschangedeventargs.cs
- DrawingCollection.cs
- MetadataException.cs
- LineProperties.cs
- StrongNameKeyPair.cs
- ObjectHandle.cs
- DynamicDiscoveryDocument.cs
- BlurBitmapEffect.cs
- ReaderWriterLock.cs
- ProbeDuplexAsyncResult.cs
- TempEnvironment.cs
- TraceSource.cs
- ApplyTemplatesAction.cs
- TargetInvocationException.cs