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
- XmlILTrace.cs
- ObjectListDataBindEventArgs.cs
- OuterGlowBitmapEffect.cs
- SmtpReplyReaderFactory.cs
- JournalEntryStack.cs
- DataGridViewTextBoxColumn.cs
- ConnectivityStatus.cs
- KeyNotFoundException.cs
- StrokeCollectionDefaultValueFactory.cs
- Font.cs
- DefaultAsyncDataDispatcher.cs
- SettingsPropertyNotFoundException.cs
- CertificateReferenceElement.cs
- PrintPageEvent.cs
- CancellationTokenSource.cs
- TabletDevice.cs
- SortExpressionBuilder.cs
- ThemeDictionaryExtension.cs
- AudioFormatConverter.cs
- CommandConverter.cs
- MessageQueueException.cs
- MetaModel.cs
- TrackingServices.cs
- TypeGenericEnumerableViewSchema.cs
- AliasGenerator.cs
- InstallerTypeAttribute.cs
- StatusBar.cs
- XmlSchemaRedefine.cs
- ObjectDataSourceFilteringEventArgs.cs
- BitmapPalette.cs
- TreeBuilderXamlTranslator.cs
- TextTreeRootNode.cs
- VectorCollection.cs
- AppDomainCompilerProxy.cs
- Positioning.cs
- SelectionPatternIdentifiers.cs
- MemoryPressure.cs
- PolicyUnit.cs
- WrapPanel.cs
- Int64AnimationBase.cs
- Grid.cs
- CodeBinaryOperatorExpression.cs
- CollectionViewGroupInternal.cs
- TickBar.cs
- StoryFragments.cs
- TextBoxBase.cs
- SqlInfoMessageEvent.cs
- Char.cs
- XmlSerializerAssemblyAttribute.cs
- XmlMapping.cs
- Message.cs
- DataSet.cs
- Transform3DGroup.cs
- UserPersonalizationStateInfo.cs
- CompositeDataBoundControl.cs
- __Filters.cs
- WizardDesigner.cs
- SEHException.cs
- UriExt.cs
- DNS.cs
- RightsManagementResourceHelper.cs
- BasicExpandProvider.cs
- ProxyAttribute.cs
- RegularExpressionValidator.cs
- QuaternionIndependentAnimationStorage.cs
- SettingsPropertyWrongTypeException.cs
- SerializerWriterEventHandlers.cs
- Converter.cs
- CreateUserWizardDesigner.cs
- SafeNativeMethodsOther.cs
- MessageBox.cs
- RegistryKey.cs
- DataGridViewCheckBoxColumn.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- TreeChangeInfo.cs
- Cursors.cs
- SqlRecordBuffer.cs
- DocumentPropertiesDialog.cs
- FrameworkContextData.cs
- WSTrustFeb2005.cs
- _UncName.cs
- GridViewAutoFormat.cs
- MultilineStringConverter.cs
- MembershipSection.cs
- StateDesignerConnector.cs
- DynamicQueryableWrapper.cs
- ErrorFormatterPage.cs
- NoneExcludedImageIndexConverter.cs
- GridItemProviderWrapper.cs
- FormView.cs
- DataExpression.cs
- ArrayListCollectionBase.cs
- EnvelopedPkcs7.cs
- ParallelQuery.cs
- IssuedSecurityTokenProvider.cs
- SchemaImporterExtensionsSection.cs
- FileRecordSequenceCompletedAsyncResult.cs
- GuidelineSet.cs
- CompiledRegexRunner.cs
- externdll.cs