diff --git a/samples/XamlTestApplicationPcl/XamlTestApp.paml b/samples/XamlTestApplicationPcl/XamlTestApp.paml
index 1bd1140e55..323e211d72 100644
--- a/samples/XamlTestApplicationPcl/XamlTestApp.paml
+++ b/samples/XamlTestApplicationPcl/XamlTestApp.paml
@@ -15,7 +15,10 @@
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
-
+
diff --git a/src/Markup/Perspex.Markup.Xaml/Binding/XamlTemplateBinding.cs b/src/Markup/Perspex.Markup.Xaml/Binding/XamlTemplateBinding.cs
index 29b4f7b997..4ccb6ff903 100644
--- a/src/Markup/Perspex.Markup.Xaml/Binding/XamlTemplateBinding.cs
+++ b/src/Markup/Perspex.Markup.Xaml/Binding/XamlTemplateBinding.cs
@@ -45,7 +45,7 @@ namespace Perspex.Markup.Xaml.Binding
if (sourceProperty == null)
{
throw new InvalidOperationException(
- $"The property {SourcePropertyPath} could not be found on {instance.GetType()}.");
+ $"The property {SourcePropertyPath} could not be found on {templatedParent.GetType()}.");
}
instance.Bind(targetProperty, templatedParent.GetObservable(sourceProperty), BindingPriority.Style);
diff --git a/src/Markup/Perspex.Markup.Xaml/OmniXAML b/src/Markup/Perspex.Markup.Xaml/OmniXAML
index 2a6309a4d9..4b0aeccf9a 160000
--- a/src/Markup/Perspex.Markup.Xaml/OmniXAML
+++ b/src/Markup/Perspex.Markup.Xaml/OmniXAML
@@ -1 +1 @@
-Subproject commit 2a6309a4d9b60b848241a34bf2adfa16b52c7a85
+Subproject commit 4b0aeccf9ad094782973cd76f5319e8a2d600223
diff --git a/src/Perspex.Base/PerspexObjectExtensions.cs b/src/Perspex.Base/PerspexObjectExtensions.cs
index e7485bee44..6aad57bb2c 100644
--- a/src/Perspex.Base/PerspexObjectExtensions.cs
+++ b/src/Perspex.Base/PerspexObjectExtensions.cs
@@ -77,8 +77,17 @@ namespace Perspex
if (parts.Length == 1)
{
- return o.GetRegisteredProperties()
+ var result = o.GetRegisteredProperties()
.FirstOrDefault(x => !x.IsAttached && x.Name == parts[0]);
+
+ if (result != null)
+ {
+ return result;
+ }
+
+ // A type can .AddOwner an attached property.
+ return o.GetRegisteredProperties()
+ .FirstOrDefault(x => x.Name == parts[0]);
}
else
{