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
- ThicknessAnimationBase.cs
- ScrollBar.cs
- EventRecordWrittenEventArgs.cs
- WebPartUserCapability.cs
- SequenceNumber.cs
- MimeBasePart.cs
- AddInEnvironment.cs
- Mapping.cs
- InputBinding.cs
- ObjectConverter.cs
- StorageEntityContainerMapping.cs
- PagePropertiesChangingEventArgs.cs
- DataStorage.cs
- Intellisense.cs
- LinqDataSourceSelectEventArgs.cs
- UserControlParser.cs
- OleDbErrorCollection.cs
- HijriCalendar.cs
- MenuBindingsEditor.cs
- XPathNodeInfoAtom.cs
- NumberSubstitution.cs
- RuntimeCompatibilityAttribute.cs
- AnnouncementEndpoint.cs
- HotSpotCollection.cs
- MachineKeyConverter.cs
- DSACryptoServiceProvider.cs
- DropShadowEffect.cs
- ResourceIDHelper.cs
- messageonlyhwndwrapper.cs
- ProgressBar.cs
- ListViewSelectEventArgs.cs
- SpellCheck.cs
- Select.cs
- WebPartEditorApplyVerb.cs
- ComboBoxItem.cs
- GrammarBuilderBase.cs
- Material.cs
- LinkedResourceCollection.cs
- EventDescriptor.cs
- MessagePropertyVariants.cs
- PenThreadWorker.cs
- TileModeValidation.cs
- StatusBarPanelClickEvent.cs
- FormsAuthenticationEventArgs.cs
- SafeTimerHandle.cs
- WebSysDescriptionAttribute.cs
- CatchBlock.cs
- Bitmap.cs
- ProxyWebPartConnectionCollection.cs
- ProofTokenCryptoHandle.cs
- Shape.cs
- WebEncodingValidatorAttribute.cs
- SmiMetaData.cs
- InvokeMethodActivity.cs
- HtmlFormParameterWriter.cs
- ScaleTransform3D.cs
- BamlTreeUpdater.cs
- DataColumnChangeEvent.cs
- ConnectionModeReader.cs
- XmlSerializerFactory.cs
- HtmlInputCheckBox.cs
- CustomActivityDesigner.cs
- AppSettingsReader.cs
- ListControl.cs
- FeatureSupport.cs
- OdbcCommand.cs
- RuleSettingsCollection.cs
- PersistChildrenAttribute.cs
- ToolstripProfessionalRenderer.cs
- SQLByteStorage.cs
- SByteStorage.cs
- CompilationUtil.cs
- IconConverter.cs
- PasswordTextNavigator.cs
- VectorCollection.cs
- Point3DCollection.cs
- BufferBuilder.cs
- RelatedEnd.cs
- SafeRegistryKey.cs
- MouseButton.cs
- ProgressBarRenderer.cs
- Scanner.cs
- X509IssuerSerialKeyIdentifierClause.cs
- TimeSpanMinutesConverter.cs
- CleanUpVirtualizedItemEventArgs.cs
- RNGCryptoServiceProvider.cs
- XPathBinder.cs
- QuaternionValueSerializer.cs
- DataGridViewColumnHeaderCell.cs
- WindowInteractionStateTracker.cs
- SqlUserDefinedAggregateAttribute.cs
- SecurityPermission.cs
- DesignerActionUIService.cs
- StickyNote.cs
- XamlWriter.cs
- XmlCodeExporter.cs
- VerificationException.cs
- ProtectedProviderSettings.cs
- QilUnary.cs
- InvokeHandlers.cs