Browse Source

Fix issue with namespace registrations.

pull/413/head
Steven Kirk 10 years ago
parent
commit
ebb7f74eef
  1. 18
      src/Markup/Perspex.Markup.Xaml/Context/PerspexNamespaceRegistry.cs

18
src/Markup/Perspex.Markup.Xaml/Context/PerspexNamespaceRegistry.cs

@ -34,7 +34,7 @@ namespace Perspex.Markup.Xaml.Context
private List<ClrNamespace> _clrNamespaces = new List<ClrNamespace>(); private List<ClrNamespace> _clrNamespaces = new List<ClrNamespace>();
private List<XamlNamespace> _namespaces = new List<XamlNamespace>(); private List<XamlNamespace> _namespaces = new List<XamlNamespace>();
private List<PrefixRegistration> _prefixes = new List<PrefixRegistration>(); private Dictionary<string, string> _prefixes = new Dictionary<string, string>();
private List<Assembly> _scanned = new List<Assembly>(); private List<Assembly> _scanned = new List<Assembly>();
public PerspexNamespaceRegistry() public PerspexNamespaceRegistry()
@ -44,7 +44,8 @@ namespace Perspex.Markup.Xaml.Context
RegisterPrefix(new PrefixRegistration(string.Empty, PerspexNs)); RegisterPrefix(new PrefixRegistration(string.Empty, PerspexNs));
} }
public IEnumerable<PrefixRegistration> RegisteredPrefixes => _prefixes; public IEnumerable<PrefixRegistration> RegisteredPrefixes =>
_prefixes.Select(x => new PrefixRegistration(x.Key, x.Value));
public void AddNamespace(XamlNamespace xamlNamespace) public void AddNamespace(XamlNamespace xamlNamespace)
{ {
@ -82,14 +83,21 @@ namespace Perspex.Markup.Xaml.Context
public Namespace GetNamespaceByPrefix(string prefix) public Namespace GetNamespaceByPrefix(string prefix)
{ {
var ns = _prefixes.FirstOrDefault(x => x.Prefix == prefix)?.Ns; string uri;
return (ns != null) ? GetNamespace(ns) : null;
if (_prefixes.TryGetValue(prefix, out uri))
{
return GetNamespace(uri);
}
return null;
} }
public void RegisterPrefix(PrefixRegistration prefixRegistration) public void RegisterPrefix(PrefixRegistration prefixRegistration)
{ {
_prefixes.Add(prefixRegistration); _prefixes[prefixRegistration.Prefix] = prefixRegistration.Ns;
} }
private static bool IsClrNamespace(string ns) private static bool IsClrNamespace(string ns)
{ {
return ns.StartsWith(ClrNamespace); return ns.StartsWith(ClrNamespace);

Loading…
Cancel
Save