Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ArgumentValueSerializer.cs
- Thumb.cs
- BufferModeSettings.cs
- RemotingAttributes.cs
- CallId.cs
- Style.cs
- SystemKeyConverter.cs
- ContainerUIElement3D.cs
- StorageEndPropertyMapping.cs
- CapabilitiesPattern.cs
- CombinedGeometry.cs
- CommunicationException.cs
- HyperLinkColumn.cs
- GetUserPreferenceRequest.cs
- Enlistment.cs
- SelectedDatesCollection.cs
- GiveFeedbackEvent.cs
- DictionaryKeyPropertyAttribute.cs
- CFStream.cs
- Transform.cs
- XpsS0ValidatingLoader.cs
- OutputCacheSettingsSection.cs
- SplitterEvent.cs
- RuleSettings.cs
- SchemaImporterExtensionsSection.cs
- GenerateScriptTypeAttribute.cs
- CultureInfoConverter.cs
- ThreadPool.cs
- TextServicesDisplayAttributePropertyRanges.cs
- SourceFilter.cs
- SqlStatistics.cs
- SynchronizedChannelCollection.cs
- PagerSettings.cs
- safesecurityhelperavalon.cs
- SqlDataSourceCache.cs
- XmlnsCache.cs
- ECDiffieHellmanCngPublicKey.cs
- WindowPatternIdentifiers.cs
- UniqueSet.cs
- ColorDialog.cs
- Root.cs
- OdbcEnvironment.cs
- OutputScopeManager.cs
- ResourceReferenceExpression.cs
- ResourceSetExpression.cs
- OleDbFactory.cs
- EnvelopedPkcs7.cs
- TypedElement.cs
- MILUtilities.cs
- XmlTextReaderImpl.cs
- NewArrayExpression.cs
- FamilyCollection.cs
- TemplateInstanceAttribute.cs
- InlineCollection.cs
- SqlConnection.cs
- HwndTarget.cs
- ThreadStateException.cs
- LayoutEditorPart.cs
- TransformedBitmap.cs
- ProviderManager.cs
- HttpCapabilitiesEvaluator.cs
- BamlMapTable.cs
- SortDescription.cs
- ImageBrush.cs
- DesignerDataStoredProcedure.cs
- ObjectNotFoundException.cs
- DocumentPageHost.cs
- Parser.cs
- CharAnimationBase.cs
- DesignerValidationSummaryAdapter.cs
- PieceNameHelper.cs
- MethodImplAttribute.cs
- BitmapFrameDecode.cs
- EffectiveValueEntry.cs
- BitmapEffectState.cs
- ListDataBindEventArgs.cs
- ScrollableControlDesigner.cs
- FolderBrowserDialogDesigner.cs
- ApplicationGesture.cs
- ScriptBehaviorDescriptor.cs
- CodeCatchClauseCollection.cs
- remotingproxy.cs
- SendMessageChannelCache.cs
- PaintValueEventArgs.cs
- WebSysDescriptionAttribute.cs
- GacUtil.cs
- MdImport.cs
- compensatingcollection.cs
- DesignTableCollection.cs
- StickyNoteContentControl.cs
- MouseDevice.cs
- ChtmlCalendarAdapter.cs
- COM2TypeInfoProcessor.cs
- InitializerFacet.cs
- CompilationLock.cs
- Mappings.cs
- RangeContentEnumerator.cs
- HttpContextBase.cs
- DataException.cs
- JapaneseCalendar.cs