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
- PauseStoryboard.cs
- CodeCastExpression.cs
- TimerExtension.cs
- UnsafeNativeMethods.cs
- SafeLocalMemHandle.cs
- OrderingQueryOperator.cs
- InvokeProviderWrapper.cs
- SmtpFailedRecipientException.cs
- PreservationFileReader.cs
- OracleColumn.cs
- WebPartCloseVerb.cs
- PeerCollaboration.cs
- Mouse.cs
- EntityProxyFactory.cs
- Misc.cs
- GenericsNotImplementedException.cs
- SHA1.cs
- SpecularMaterial.cs
- WindowsServiceElement.cs
- EditCommandColumn.cs
- DrawingVisualDrawingContext.cs
- MailDefinition.cs
- ListBox.cs
- HMACRIPEMD160.cs
- TextDecoration.cs
- NumberSubstitution.cs
- PostBackTrigger.cs
- PerformanceCounters.cs
- CodeTryCatchFinallyStatement.cs
- NonSerializedAttribute.cs
- CustomLineCap.cs
- DataListItemCollection.cs
- MarkerProperties.cs
- ConfigXmlAttribute.cs
- TripleDES.cs
- BindingWorker.cs
- TableItemProviderWrapper.cs
- PropertyToken.cs
- TraceHandler.cs
- ChannelPoolSettingsElement.cs
- VisualProxy.cs
- RestHandler.cs
- FlowLayoutPanelDesigner.cs
- BooleanAnimationUsingKeyFrames.cs
- DataSourceUtil.cs
- SoapDocumentServiceAttribute.cs
- TextServicesPropertyRanges.cs
- Registry.cs
- CopyCodeAction.cs
- DecoderFallback.cs
- WorkflowQueueInfo.cs
- CallbackHandler.cs
- AppearanceEditorPart.cs
- NumberFormatInfo.cs
- CompilerScopeManager.cs
- XD.cs
- IndicShape.cs
- SqlTypeSystemProvider.cs
- BasicViewGenerator.cs
- DesignerGenericWebPart.cs
- MethodAccessException.cs
- LinqDataSourceHelper.cs
- RegisteredArrayDeclaration.cs
- BufferedGraphicsManager.cs
- Point.cs
- TableItemPattern.cs
- NativeWindow.cs
- DesignerTransactionCloseEvent.cs
- SequenceDesigner.xaml.cs
- FormViewModeEventArgs.cs
- COM2FontConverter.cs
- ObjectViewQueryResultData.cs
- RelatedPropertyManager.cs
- AuthorizationContext.cs
- FunctionUpdateCommand.cs
- ISAPIApplicationHost.cs
- GroupItemAutomationPeer.cs
- ControlPropertyNameConverter.cs
- SerialReceived.cs
- DataControlPagerLinkButton.cs
- ObjectItemNoOpAssemblyLoader.cs
- TextContainerChangeEventArgs.cs
- DesignColumn.cs
- XmlNamespaceMapping.cs
- ResourcesGenerator.cs
- WebBrowserUriTypeConverter.cs
- ScaleTransform.cs
- WhitespaceRule.cs
- CacheMemory.cs
- WebPartCatalogCloseVerb.cs
- SelectionProviderWrapper.cs
- ClientConfigurationSystem.cs
- ProgressPage.cs
- ProfilePropertySettingsCollection.cs
- TreeNodeBindingCollection.cs
- TreeViewTemplateSelector.cs
- GridItemCollection.cs
- PerformanceCounterCategory.cs
- ClientData.cs
- DoWhile.cs