Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / 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.NameScopeInvalidIdentifierName, 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.
/****************************************************************************\
*
* 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.NameScopeInvalidIdentifierName, 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
- AspNetSynchronizationContext.cs
- MemberAccessException.cs
- Span.cs
- DispatcherHookEventArgs.cs
- WinFormsSpinner.cs
- HttpListenerRequest.cs
- BamlLocalizer.cs
- XmlSerializerNamespaces.cs
- DecimalConverter.cs
- Rotation3D.cs
- ColumnResizeUndoUnit.cs
- SpellerError.cs
- LiteralControl.cs
- DataContractAttribute.cs
- ObjectComplexPropertyMapping.cs
- CodeTypeParameterCollection.cs
- CustomExpressionEventArgs.cs
- DPCustomTypeDescriptor.cs
- XmlSchemaComplexType.cs
- PropertyContainer.cs
- HwndAppCommandInputProvider.cs
- DBCommandBuilder.cs
- QuadraticBezierSegment.cs
- SecurityException.cs
- Identity.cs
- ComponentResourceKeyConverter.cs
- SafeLocalMemHandle.cs
- RegistryExceptionHelper.cs
- DispatcherProcessingDisabled.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Converter.cs
- NavigationPropertyEmitter.cs
- PenContext.cs
- QilReplaceVisitor.cs
- altserialization.cs
- hresults.cs
- NavigateEvent.cs
- ChameleonKey.cs
- QueuePropertyVariants.cs
- StrokeDescriptor.cs
- DataGridColumnCollection.cs
- SuppressMergeCheckAttribute.cs
- HostedHttpContext.cs
- OutOfProcStateClientManager.cs
- TraceLevelStore.cs
- CodeSnippetStatement.cs
- CmsInterop.cs
- EntityParameterCollection.cs
- CheckBoxFlatAdapter.cs
- SystemUnicastIPAddressInformation.cs
- AccessViolationException.cs
- Message.cs
- InputBindingCollection.cs
- OleDbParameter.cs
- ResourcePart.cs
- Point3DAnimationUsingKeyFrames.cs
- CodePageEncoding.cs
- EntityDataSourceChangedEventArgs.cs
- KeyGestureValueSerializer.cs
- ReturnType.cs
- InvalidBodyAccessException.cs
- XmlCompatibilityReader.cs
- EntityTypeEmitter.cs
- CollectionViewGroupInternal.cs
- FirewallWrapper.cs
- SignatureHelper.cs
- CellTreeNode.cs
- DetailsViewModeEventArgs.cs
- Variable.cs
- TypeToken.cs
- EntityDataSourceMemberPath.cs
- DataSvcMapFile.cs
- ComplusTypeValidator.cs
- OrderedHashRepartitionStream.cs
- MatrixTransform3D.cs
- XmlCharType.cs
- RefreshPropertiesAttribute.cs
- FrameworkElementAutomationPeer.cs
- ProcessInputEventArgs.cs
- DataSourceControl.cs
- GeneralTransform3DGroup.cs
- Vector.cs
- Attributes.cs
- ScrollPattern.cs
- ManipulationVelocities.cs
- DetailsViewRow.cs
- Pkcs9Attribute.cs
- SoapMessage.cs
- XmlMemberMapping.cs
- ListDictionary.cs
- PathStreamGeometryContext.cs
- PerSessionInstanceContextProvider.cs
- PostBackOptions.cs
- ValidationHelper.cs
- ExpressionCopier.cs
- SqlCommand.cs
- SafeRegistryHandle.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- sqlnorm.cs
- HandledEventArgs.cs