diff --git a/src/Markup/Perspex.Markup.Xaml/Context/NameScopeWrapper.cs b/src/Markup/Perspex.Markup.Xaml/Context/NameScopeWrapper.cs new file mode 100644 index 0000000000..4cb67ce912 --- /dev/null +++ b/src/Markup/Perspex.Markup.Xaml/Context/NameScopeWrapper.cs @@ -0,0 +1,30 @@ +// Copyright (c) The Perspex Project. All rights reserved. +// Licensed under the MIT license. See licence.md file in the project root for full license information. + +namespace Perspex.Markup.Xaml.Context +{ + internal class NameScopeWrapper : OmniXaml.INameScope + { + private Perspex.INameScope _inner; + + public NameScopeWrapper(Perspex.INameScope inner) + { + _inner = inner; + } + + public object Find(string name) + { + return _inner.Find(name); + } + + public void Register(string name, object scopedElement) + { + _inner.Register(name, scopedElement); + } + + public void Unregister(string name) + { + _inner.Unregister(name); + } + } +} diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs index 34f0dcca67..c771b30509 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs @@ -18,6 +18,28 @@ namespace Perspex.Markup.Xaml.Context { } + public override OmniXaml.INameScope GetNamescope(object instance) + { + var result = this.UnderlyingType as OmniXaml.INameScope; + + if (result == null) + { + var visual = instance as Visual; + + if (visual != null) + { + var perspexNs = (instance as Perspex.INameScope) ?? NameScope.GetNameScope(visual); + + if (perspexNs != null) + { + result = new NameScopeWrapper(perspexNs); + } + } + } + + return result; + } + protected override XamlMember LookupMember(string name) { return new PerspexXamlMember(name, this, TypeRepository, FeatureProvider); diff --git a/src/Markup/Perspex.Markup.Xaml/OmniXAML b/src/Markup/Perspex.Markup.Xaml/OmniXAML index 3582fa46d3..e900876696 160000 --- a/src/Markup/Perspex.Markup.Xaml/OmniXAML +++ b/src/Markup/Perspex.Markup.Xaml/OmniXAML @@ -1 +1 @@ -Subproject commit 3582fa46d30fd5f747390c3c7296c4c7c9e5be3e +Subproject commit e900876696103a752ef6e28ec9d884090ef14f92 diff --git a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj index 9ed83085bb..35fde7d0e4 100644 --- a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj +++ b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj @@ -38,6 +38,7 @@ Properties\SharedAssemblyInfo.cs +