Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- CodeValidator.cs
- ContractType.cs
- SqlClientWrapperSmiStream.cs
- ConnectionInterfaceCollection.cs
- LocatorManager.cs
- StandardToolWindows.cs
- BamlLocalizableResourceKey.cs
- ErrorHandler.cs
- EditorPart.cs
- HttpListenerTimeoutManager.cs
- ConnectionProviderAttribute.cs
- PageContentCollection.cs
- PropertyCollection.cs
- oledbmetadatacollectionnames.cs
- ControlPropertyNameConverter.cs
- Ipv6Element.cs
- SystemResources.cs
- ParameterToken.cs
- XmlC14NWriter.cs
- ArgumentValidation.cs
- WebBrowserNavigatedEventHandler.cs
- SimpleType.cs
- XsltOutput.cs
- ExpressionList.cs
- AssemblyAttributesGoHere.cs
- DictionaryBase.cs
- LinearKeyFrames.cs
- EdgeModeValidation.cs
- ValuePatternIdentifiers.cs
- securitycriticaldataformultiplegetandset.cs
- CompositeDesignerAccessibleObject.cs
- MetadataArtifactLoaderCompositeFile.cs
- X509CertificateInitiatorClientCredential.cs
- DomainUpDown.cs
- CopyCodeAction.cs
- BackgroundFormatInfo.cs
- SystemIPInterfaceStatistics.cs
- Visitors.cs
- TypeInformation.cs
- XmlSchemaExporter.cs
- FormViewDeleteEventArgs.cs
- SafeHandle.cs
- WebDisplayNameAttribute.cs
- XmlNotation.cs
- BindingSource.cs
- PluralizationService.cs
- SymmetricKeyWrap.cs
- HierarchicalDataTemplate.cs
- StorageConditionPropertyMapping.cs
- ContractBase.cs
- _CacheStreams.cs
- RoutedEvent.cs
- ErrorStyle.cs
- DateTimeOffsetConverter.cs
- HttpContextServiceHost.cs
- SrgsRulesCollection.cs
- ArraySet.cs
- DynamicDataExtensions.cs
- SessionStateUtil.cs
- CompiledXpathExpr.cs
- SHA512Cng.cs
- AppearanceEditorPart.cs
- SpAudioStreamWrapper.cs
- panel.cs
- AsymmetricKeyExchangeDeformatter.cs
- ContentFilePart.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- InkPresenterAutomationPeer.cs
- StringSource.cs
- XamlReaderConstants.cs
- XhtmlTextWriter.cs
- Stack.cs
- MultiAsyncResult.cs
- TextEndOfParagraph.cs
- SiteOfOriginPart.cs
- SafeNativeMethods.cs
- SynchronizingStream.cs
- DataGridRowClipboardEventArgs.cs
- HttpListener.cs
- Menu.cs
- HttpServerVarsCollection.cs
- XmlImplementation.cs
- PDBReader.cs
- FixedLineResult.cs
- DbParameterHelper.cs
- DetailsViewInsertedEventArgs.cs
- InkCanvas.cs
- MailDefinition.cs
- SqlDependencyListener.cs
- CollectionViewProxy.cs
- LoginViewDesigner.cs
- SvcMapFileSerializer.cs
- ToolStripContentPanel.cs
- WebBrowserDocumentCompletedEventHandler.cs
- DigestComparer.cs
- ConnectionsZone.cs
- ListItemConverter.cs
- BindingValueChangedEventArgs.cs
- CodeAttributeDeclaration.cs
- MultiPropertyDescriptorGridEntry.cs