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
- ProfileSettings.cs
- Positioning.cs
- ConsumerConnectionPointCollection.cs
- SinglePhaseEnlistment.cs
- EdmEntityTypeAttribute.cs
- ContentOperations.cs
- CodePrimitiveExpression.cs
- HttpCachePolicy.cs
- Range.cs
- PageEventArgs.cs
- URIFormatException.cs
- ReadOnlyTernaryTree.cs
- GlobalItem.cs
- RectValueSerializer.cs
- CharConverter.cs
- ColumnTypeConverter.cs
- ContextConfiguration.cs
- XamlFxTrace.cs
- WindowsImpersonationContext.cs
- BitmapScalingModeValidation.cs
- ToolStripItemRenderEventArgs.cs
- WebSysDescriptionAttribute.cs
- RequestCacheValidator.cs
- FlowPanelDesigner.cs
- Volatile.cs
- NumberAction.cs
- DataViewManager.cs
- ViewCellSlot.cs
- XmlSchemaGroupRef.cs
- XmlAttributeCache.cs
- ProviderConnectionPoint.cs
- RequiredAttributeAttribute.cs
- StrokeCollection2.cs
- XmlObjectSerializerWriteContext.cs
- Overlapped.cs
- GroupDescription.cs
- WindowsPen.cs
- SystemIcons.cs
- CollectionBuilder.cs
- RepeatInfo.cs
- MenuItemStyle.cs
- VirtualizingPanel.cs
- ClockController.cs
- XmlNullResolver.cs
- FreezableCollection.cs
- _CommandStream.cs
- CacheMode.cs
- PanningMessageFilter.cs
- CellParaClient.cs
- FixedSOMPageConstructor.cs
- CallbackHandler.cs
- EventLevel.cs
- ChannelManager.cs
- ProviderSettingsCollection.cs
- IDReferencePropertyAttribute.cs
- Resources.Designer.cs
- ListItemParagraph.cs
- DurableOperationAttribute.cs
- DbConnectionPoolOptions.cs
- NetworkAddressChange.cs
- UnhandledExceptionEventArgs.cs
- Ref.cs
- StylusPointPropertyUnit.cs
- CodeEventReferenceExpression.cs
- ServiceModelTimeSpanValidator.cs
- UxThemeWrapper.cs
- ClientScriptManagerWrapper.cs
- Stylus.cs
- OptionalColumn.cs
- RootAction.cs
- DataGridHyperlinkColumn.cs
- FlowPosition.cs
- Font.cs
- CSharpCodeProvider.cs
- ProjectionCamera.cs
- FormatterServices.cs
- WebEventTraceProvider.cs
- ScalarType.cs
- FontFamily.cs
- XsltInput.cs
- SrgsItemList.cs
- DrawingImage.cs
- XmlComplianceUtil.cs
- Button.cs
- ToolStripLabel.cs
- LingerOption.cs
- ModelToObjectValueConverter.cs
- SqlAggregateChecker.cs
- WorkflowDebuggerSteppingAttribute.cs
- ServicePointManagerElement.cs
- InitializerFacet.cs
- ObjectStateManager.cs
- BamlWriter.cs
- ReadOnlyDictionary.cs
- XsltFunctions.cs
- BuildProvider.cs
- UntypedNullExpression.cs
- ColumnBinding.cs
- ToolStripPanelDesigner.cs
- PackWebResponse.cs