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
- MaskedTextBoxTextEditorDropDown.cs
- DbMetaDataCollectionNames.cs
- ConnectionInterfaceCollection.cs
- AppDomainUnloadedException.cs
- MobileControlPersister.cs
- LZCodec.cs
- EventsTab.cs
- AppDomainCompilerProxy.cs
- InputScopeConverter.cs
- FormatConvertedBitmap.cs
- FileSystemInfo.cs
- SQLDateTimeStorage.cs
- TypeListConverter.cs
- ScriptingWebServicesSectionGroup.cs
- ClientScriptManager.cs
- AssertFilter.cs
- BamlTreeMap.cs
- InlinedAggregationOperatorEnumerator.cs
- recordstatescratchpad.cs
- PartBasedPackageProperties.cs
- TableRowsCollectionEditor.cs
- PictureBoxDesigner.cs
- SafePEFileHandle.cs
- HtmlTableRow.cs
- DataTableReader.cs
- FilterUserControlBase.cs
- TableLayoutPanelCodeDomSerializer.cs
- TypeRestriction.cs
- TypeDelegator.cs
- PickDesigner.xaml.cs
- Substitution.cs
- PersistStreamTypeWrapper.cs
- SimplePropertyEntry.cs
- NameTable.cs
- DirectoryObjectSecurity.cs
- MethodBuilderInstantiation.cs
- NamespaceDisplayAutomationPeer.cs
- LeaseManager.cs
- Transform3DCollection.cs
- ChangeBlockUndoRecord.cs
- MtomMessageEncodingElement.cs
- FramingChannels.cs
- DelegateSerializationHolder.cs
- BitmapEffectInputConnector.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ExpanderAutomationPeer.cs
- SqlDataSourceSelectingEventArgs.cs
- RelatedView.cs
- XmlQueryContext.cs
- RuntimeHandles.cs
- AspCompat.cs
- ExtensibleClassFactory.cs
- LZCodec.cs
- ValueOfAction.cs
- TransportListener.cs
- WebPageTraceListener.cs
- clipboard.cs
- ConfigViewGenerator.cs
- Command.cs
- ConvertEvent.cs
- BamlRecordWriter.cs
- ConstructorExpr.cs
- CursorEditor.cs
- updateconfighost.cs
- CompressedStack.cs
- SafeCryptHandles.cs
- KeyedHashAlgorithm.cs
- LinqDataSourceUpdateEventArgs.cs
- BuilderPropertyEntry.cs
- TrackingMemoryStreamFactory.cs
- FederatedMessageSecurityOverHttpElement.cs
- DataGridViewCellValueEventArgs.cs
- HostedElements.cs
- QueryStringHandler.cs
- RecognizerBase.cs
- TraceFilter.cs
- IgnorePropertiesAttribute.cs
- OdbcException.cs
- ServiceX509SecurityTokenProvider.cs
- DesignerActionList.cs
- CopyEncoder.cs
- DesignerTransactionCloseEvent.cs
- OdbcConnectionFactory.cs
- OneToOneMappingSerializer.cs
- ViewManager.cs
- FileFormatException.cs
- FirstMatchCodeGroup.cs
- SHA384.cs
- PropertyInfoSet.cs
- SecurityDescriptor.cs
- Verify.cs
- DecimalKeyFrameCollection.cs
- InternalException.cs
- UnicodeEncoding.cs
- UDPClient.cs
- SqlNodeTypeOperators.cs
- WorkflowMarkupElementEventArgs.cs
- MergeFilterQuery.cs
- RectIndependentAnimationStorage.cs
- dbdatarecord.cs