Code:
/ 4.0 / 4.0 / 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. /****************************************************************************\ * * 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
- IPeerNeighbor.cs
- InplaceBitmapMetadataWriter.cs
- SortAction.cs
- StrongNameMembershipCondition.cs
- BoundColumn.cs
- HWStack.cs
- SQlBooleanStorage.cs
- ResumeStoryboard.cs
- MapPathBasedVirtualPathProvider.cs
- ControlTemplate.cs
- OdbcConnectionStringbuilder.cs
- HttpApplicationStateWrapper.cs
- FontUnit.cs
- ApplicationFileParser.cs
- LinqDataSourceView.cs
- PageStatePersister.cs
- CapabilitiesState.cs
- DataControlPagerLinkButton.cs
- WindowsSecurityToken.cs
- PackagePart.cs
- EncryptedPackage.cs
- HttpChannelBindingToken.cs
- DataBindingValueUIHandler.cs
- BooleanFunctions.cs
- WindowsTokenRoleProvider.cs
- Cursor.cs
- ToolStripInSituService.cs
- RectangleF.cs
- DiscardableAttribute.cs
- DocumentViewerAutomationPeer.cs
- NewItemsContextMenuStrip.cs
- DBNull.cs
- ComponentEditorPage.cs
- LocatorManager.cs
- VerticalAlignConverter.cs
- RTTrackingProfile.cs
- ContentFileHelper.cs
- OracleMonthSpan.cs
- MemberHolder.cs
- HealthMonitoringSectionHelper.cs
- VideoDrawing.cs
- WebBrowserUriTypeConverter.cs
- SemanticKeyElement.cs
- XmlSchemaSubstitutionGroup.cs
- BitVec.cs
- DataGridItemEventArgs.cs
- ConfigurationSection.cs
- TableLayoutStyle.cs
- FirstMatchCodeGroup.cs
- OptimalTextSource.cs
- ScriptRegistrationManager.cs
- PointUtil.cs
- MessageFormatterConverter.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- AlphabeticalEnumConverter.cs
- CacheRequest.cs
- SHA512Managed.cs
- ResourceReferenceKeyNotFoundException.cs
- RightsManagementErrorHandler.cs
- SqlDataSourceCache.cs
- NoneExcludedImageIndexConverter.cs
- RC2.cs
- Expression.cs
- path.cs
- TTSEvent.cs
- AsmxEndpointPickerExtension.cs
- MonthCalendarDesigner.cs
- log.cs
- XPathNodeHelper.cs
- PageAsyncTaskManager.cs
- VisualStyleRenderer.cs
- ProxyHwnd.cs
- MemberRelationshipService.cs
- SplayTreeNode.cs
- SequentialOutput.cs
- ComponentResourceKey.cs
- UInt32Converter.cs
- BooleanFunctions.cs
- MimeReturn.cs
- GeometryGroup.cs
- ModelVisual3D.cs
- SmtpException.cs
- ResXResourceWriter.cs
- Attributes.cs
- XmlUTF8TextReader.cs
- SspiSafeHandles.cs
- Documentation.cs
- GC.cs
- LassoSelectionBehavior.cs
- Menu.cs
- TabletCollection.cs
- StyleCollectionEditor.cs
- DataView.cs
- ImageFormat.cs
- CurrentChangingEventManager.cs
- AssemblyInfo.cs
- TCPClient.cs
- XmlEventCache.cs
- ChangeProcessor.cs
- BulletDecorator.cs