/// <summary>
        /// Unregister Name-Object Map
        /// </summary>
        /// <param name="name">name to be registered</param>
        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);
            }
        }
        /// <summary>
        /// Register Name-Object Map
        /// </summary>
        /// <param name="name">name to be registered</param>
        /// <param name="scopedElement">object mapped to name</param>
        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);
            }
        }
Exemplo n.º 3
0
 /// <summary>Removes a name-object mapping from the XAML namescope.</summary>
 /// <param name="name">The name of the mapping to remove.</param>
 /// <exception cref="T:System.ArgumentException">
 ///   <paramref name="name" /> was provided as empty string.- or -<paramref name="name" /> provided had not been registered.</exception>
 /// <exception cref="T:System.ArgumentNullException">
 ///   <paramref name="name" /> is null.</exception>
 public void UnregisterName(string name)
 {
     if (name == null)
     {
         throw new ArgumentNullException("name");
     }
     if (name == string.Empty)
     {
         throw new ArgumentException(SR.Get("NameScopeNameNotEmptyString"));
     }
     if (_nameMap == null || _nameMap[name] == null)
     {
         throw new ArgumentException(SR.Get("NameScopeNameNotFound", name));
     }
     _nameMap.Remove(name);
     if (TraceNameScope.IsEnabled)
     {
         TraceNameScope.TraceActivityItem(TraceNameScope.UnregisterName, this, name);
     }
 }
Exemplo n.º 4
0
 /// <summary>Registers a new name-object pair into the current XAML namescope.</summary>
 /// <param name="name">The name to use for mapping the given object.</param>
 /// <param name="scopedElement">The object to be mapped to the provided name.</param>
 /// <exception cref="T:System.ArgumentNullException">
 ///   <paramref name="name" /> or <paramref name="scopedElement" /> was provided as null.</exception>
 /// <exception cref="T:System.ArgumentException">
 ///   <paramref name="name" /> was provided as empty string- or -<paramref name="name" /> provided was rejected by the parser, because it contained characters that are invalid for a XAML name- or -<paramref name="name" /> provided would result in a duplicate name registration.</exception>
 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("NameScopeNameNotEmptyString"));
     }
     if (!NameValidationHelper.IsValidIdentifierName(name))
     {
         throw new ArgumentException(SR.Get("NameScopeInvalidIdentifierName", name));
     }
     if (_nameMap == null)
     {
         _nameMap = new HybridDictionary {
             [name] = scopedElement
         };
     }
     else
     {
         object obj = _nameMap[name];
         if (obj == null)
         {
             _nameMap[name] = scopedElement;
         }
         else if (scopedElement != obj)
         {
             throw new ArgumentException(SR.Get("NameScopeDuplicateNamesNotAllowed", name));
         }
     }
     if (TraceNameScope.IsEnabled)
     {
         TraceNameScope.TraceActivityItem(TraceNameScope.RegisterName, this, name, scopedElement);
     }
 }