Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / NameScope.cs / 1 / NameScope.cs
/****************************************************************************\ * * File: NameScope.cs * * Used to store mapping information for names occuring * within the logical tree section. * * Copyright (C) 2005 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Windows; using System.Collections; using System.Collections.Specialized; using System.Globalization; using System.Windows.Markup; using System.ComponentModel; using MS.Internal; namespace System.Windows { ////// Used to store mapping information for names occuring /// within the logical tree section. /// public class NameScope : INameScope { #region INameScope ////// Register Name-Object Map /// /// name to be registered /// object mapped to name public void RegisterName(string name, object scopedElement) { if (name == null) throw new ArgumentNullException("name"); if (scopedElement == null) throw new ArgumentNullException("scopedElement"); if (name == String.Empty) throw new ArgumentException(SR.Get(SRID.NameScopeNameNotEmptyString)); if (!NameValidationHelper.IsValidIdentifierName(name)) { throw new ArgumentException(SR.Get(SRID.ParserInvalidIdentifierName, name)); } if (_nameMap == null) { _nameMap = new HybridDictionary(); _nameMap[name] = scopedElement; } else { object nameContext = _nameMap[name]; // first time adding the Name, set it if (nameContext == null) { _nameMap[name] = scopedElement; } else if (scopedElement != nameContext) { throw new ArgumentException(SR.Get(SRID.NameScopeDuplicateNamesNotAllowed, name)); } } if( TraceNameScope.IsEnabled ) { TraceNameScope.TraceActivityItem( TraceNameScope.RegisterName, this, name, scopedElement ); } } ////// Unregister Name-Object Map /// /// name to be registered public void UnregisterName(string name) { if (name == null) throw new ArgumentNullException("name"); if (name == String.Empty) throw new ArgumentException(SR.Get(SRID.NameScopeNameNotEmptyString)); if (_nameMap != null && _nameMap[name] != null) { _nameMap.Remove(name); } else { throw new ArgumentException(SR.Get(SRID.NameScopeNameNotFound, name)); } if( TraceNameScope.IsEnabled ) { TraceNameScope.TraceActivityItem( TraceNameScope.UnregisterName, this, name ); } } ////// Find - Find the corresponding object given a Name /// /// Name for which context needs to be retrieved ///corresponding Context if found, else null public object FindName(string name) { if (_nameMap == null || name == null || name == String.Empty) return null; return _nameMap[name]; } #endregion INameScope #region InternalMethods internal static INameScope NameScopeFromObject(object obj) { INameScope nameScope = obj as INameScope; if (nameScope == null) { DependencyObject objAsDO = obj as DependencyObject; if (objAsDO != null) { nameScope = GetNameScope(objAsDO); } } return nameScope; } #endregion InternalMethods #region DependencyProperties ////// NameScope property. This is an attached property. /// This property allows the dynamic attachment of NameScopes /// public static readonly DependencyProperty NameScopeProperty = DependencyProperty.RegisterAttached( "NameScope", typeof(INameScope), typeof(NameScope)); ////// Helper for setting NameScope property on a DependencyObject. /// /// Dependency Object to set NameScope property on. /// NameScope property value. public static void SetNameScope(DependencyObject dependencyObject, INameScope value) { if (dependencyObject == null) { throw new ArgumentNullException("dependencyObject"); } dependencyObject.SetValue(NameScopeProperty, value); } ////// Helper for reading NameScope property from a DependencyObject. /// /// DependencyObject to read NameScope property from. ///NameScope property value. [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public static INameScope GetNameScope(DependencyObject dependencyObject) { if (dependencyObject == null) { throw new ArgumentNullException("dependencyObject"); } return ((INameScope)dependencyObject.GetValue(NameScopeProperty)); } #endregion DependencyProperties #region Data // This is a HybridDictionary of Name-Object maps private HybridDictionary _nameMap; #endregion Data } } // 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
- ThaiBuddhistCalendar.cs
- StickyNoteAnnotations.cs
- PersianCalendar.cs
- EventLogRecord.cs
- FixedElement.cs
- TextLineBreak.cs
- NavigationFailedEventArgs.cs
- SqlCacheDependency.cs
- SafeMILHandle.cs
- DbModificationClause.cs
- DragEventArgs.cs
- EntityCommandDefinition.cs
- UserInitiatedNavigationPermission.cs
- DESCryptoServiceProvider.cs
- WSDualHttpBinding.cs
- UnsafeNativeMethods.cs
- SafeHandles.cs
- ColorConvertedBitmapExtension.cs
- XsltSettings.cs
- PermissionRequestEvidence.cs
- StringToken.cs
- StreamAsIStream.cs
- StatusBarPanelClickEvent.cs
- ControlCommandSet.cs
- NavigationWindowAutomationPeer.cs
- NetStream.cs
- SqlMethodCallConverter.cs
- ProxyWebPartConnectionCollection.cs
- TcpAppDomainProtocolHandler.cs
- BindUriHelper.cs
- FileReservationCollection.cs
- ValidateNames.cs
- LayoutDump.cs
- TextWriter.cs
- AdRotator.cs
- SQLInt32Storage.cs
- UIElementParagraph.cs
- QueryableDataSource.cs
- WebEventCodes.cs
- Localizer.cs
- PeerTransportBindingElement.cs
- StylusTip.cs
- Events.cs
- ThreadStartException.cs
- ProfileModule.cs
- DrawingContextWalker.cs
- FormsAuthentication.cs
- Identity.cs
- ImpersonationContext.cs
- WebMessageBodyStyleHelper.cs
- Imaging.cs
- KoreanLunisolarCalendar.cs
- KnowledgeBase.cs
- SchemaDeclBase.cs
- PermissionSet.cs
- TextShapeableCharacters.cs
- AsymmetricSignatureFormatter.cs
- SqlConnectionFactory.cs
- ConfigXmlText.cs
- PointCollectionConverter.cs
- Int64AnimationBase.cs
- WebPartEditorApplyVerb.cs
- String.cs
- SkinBuilder.cs
- RightsManagementEncryptedStream.cs
- ScriptManagerProxy.cs
- ProviderCommandInfoUtils.cs
- PrivateFontCollection.cs
- MultilineStringConverter.cs
- SessionState.cs
- PtsContext.cs
- TiffBitmapEncoder.cs
- ToolStripSplitStackLayout.cs
- WindowsRichEditRange.cs
- PlatformCulture.cs
- TextRunCache.cs
- GenericParameterDataContract.cs
- DisplayNameAttribute.cs
- COM2ComponentEditor.cs
- sqlpipe.cs
- SkinBuilder.cs
- NamedObject.cs
- VersionedStreamOwner.cs
- XmlDictionary.cs
- DataTableReaderListener.cs
- PerspectiveCamera.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- LocalTransaction.cs
- PointKeyFrameCollection.cs
- SettingsPropertyNotFoundException.cs
- WCFBuildProvider.cs
- SizeValueSerializer.cs
- XsdBuilder.cs
- DBConcurrencyException.cs
- OpacityConverter.cs
- BindingExpression.cs
- CreatingCookieEventArgs.cs
- BitmapDecoder.cs
- InternalCache.cs
- XmlLanguage.cs