internal static object ConvertFromHelper(ITypeDescriptorContext context, object value)
        {
            if (value == null)
            {
                return(null);
            }

            String stringValue = value as String;

            if (stringValue == null)
            {
                return(null);
            }

            stringValue = stringValue.Trim();
            if (stringValue == String.Empty)
            {
                return(null);
            }

            IXamlNamespaceResolver resolver =
                context.GetService(typeof(IXamlNamespaceResolver)) as IXamlNamespaceResolver;

            if (resolver == null)
            {
                return(null);
            }

            if (stringValue[0] == '{')
            {
                return(XName.Get(stringValue));
            }

            int    indexOfColon = stringValue.IndexOf(':');
            string prefix, localName;

            if (indexOfColon >= 0)
            {
                prefix    = stringValue.Substring(0, indexOfColon);
                localName = stringValue.Substring(indexOfColon + 1);
            }
            else
            {
                prefix    = string.Empty;
                localName = stringValue;
            }

            string ns = resolver.GetNamespace(prefix);

            if (ns == null)
            {
                throw FxTrace.Exception.AsError(new FormatException(SRCore.CouldNotResolveNamespacePrefix(prefix)));
            }

            return(XName.Get(localName, ns));
        }