Browse Source

Proof of concept for OmniXAML issue #57.

pull/325/head
Steven Kirk 11 years ago
parent
commit
c8b772c4ce
  1. 30
      src/Markup/Perspex.Markup.Xaml/Context/NameScopeWrapper.cs
  2. 22
      src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs
  3. 2
      src/Markup/Perspex.Markup.Xaml/OmniXAML
  4. 1
      src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj

30
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);
}
}
}

22
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);

2
src/Markup/Perspex.Markup.Xaml/OmniXAML

@ -1 +1 @@
Subproject commit 3582fa46d30fd5f747390c3c7296c4c7c9e5be3e
Subproject commit e900876696103a752ef6e28ec9d884090ef14f92

1
src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj

@ -38,6 +38,7 @@
<Compile Include="..\..\Shared\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Context\NameScopeWrapper.cs" />
<Compile Include="Converters\PerspexListTypeConverter.cs" />
<Compile Include="Converters\RelativeRectTypeConverter.cs" />
<Compile Include="Data\IXamlBinding.cs" />

Loading…
Cancel
Save