From 26a322e0fc91c570e0079b0968786d4b4883510f Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Fri, 16 Oct 2015 02:33:30 +0200 Subject: [PATCH] Add some more XAML control template goodness. --- samples/XamlTestApplicationPcl/XamlTestApp.paml | 5 ++++- .../Binding/XamlTemplateBinding.cs | 2 +- src/Markup/Perspex.Markup.Xaml/OmniXAML | 2 +- src/Perspex.Base/PerspexObjectExtensions.cs | 11 ++++++++++- 4 files changed, 16 insertions(+), 4 deletions(-) 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 {