diff --git a/Perspex/Controls/ContentPresenter.cs b/Perspex/Controls/ContentPresenter.cs index 953f3b38f6..b2156ef452 100644 --- a/Perspex/Controls/ContentPresenter.cs +++ b/Perspex/Controls/ContentPresenter.cs @@ -83,6 +83,7 @@ namespace Perspex.Controls if (this.visualChild != null) { ((IVisual)this.visualChild).VisualParent = this; + ((Control)this.visualChild).TemplatedParent = null; } } diff --git a/Perspex/Controls/Control.cs b/Perspex/Controls/Control.cs index dab6df339e..94d3fc8c56 100644 --- a/Perspex/Controls/Control.cs +++ b/Perspex/Controls/Control.cs @@ -38,6 +38,9 @@ namespace Perspex.Controls public static readonly PerspexProperty ParentProperty = PerspexProperty.Register("Parent"); + public static readonly PerspexProperty TemplatedParentProperty = + PerspexProperty.Register("TemplatedParent", inherits: true); + private Classes classes; private DataTemplates dataTemplates; @@ -172,8 +175,13 @@ namespace Perspex.Controls public ITemplatedControl TemplatedParent { - get; - internal set; + get + { + var val = this.GetValue(TemplatedParentProperty); + System.Diagnostics.Debug.WriteLine(val); + return val; + } + internal set { this.SetValue(TemplatedParentProperty, value); } } ILogical ILogical.LogicalParent diff --git a/Perspex/Controls/ControlTemplate.cs b/Perspex/Controls/ControlTemplate.cs index 422f472ee9..393c3138ae 100644 --- a/Perspex/Controls/ControlTemplate.cs +++ b/Perspex/Controls/ControlTemplate.cs @@ -34,24 +34,8 @@ namespace Perspex.Controls Contract.Requires(templatedParent != null); Control root = this.build(templatedParent); - this.SetTemplatedParent(root, templatedParent); + root.TemplatedParent = templatedParent; return root; } - - private void SetTemplatedParent(Control control, ITemplatedControl templatedParent) - { - Contract.Requires(control != null); - Contract.Requires(templatedParent != null); - - control.TemplatedParent = templatedParent; - - if (!(control is ContentPresenter)) - { - foreach (Control child in ((IVisual)control).VisualChildren.OfType()) - { - this.SetTemplatedParent(child, templatedParent); - } - } - } } } diff --git a/TestApplication/Program.cs b/TestApplication/Program.cs index 7bd1db0e1e..6ddd75dad9 100644 --- a/TestApplication/Program.cs +++ b/TestApplication/Program.cs @@ -1,22 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Reactive.Linq; -using System.Text; -using System.Threading.Tasks; -using Perspex; +using Perspex; using Perspex.Controls; -using Perspex.Input; using Perspex.Layout; using Perspex.Media; using Perspex.Media.Imaging; -using Perspex.Shapes; -using Perspex.Styling; -using Perspex.Themes.Default; using Perspex.Threading; using Perspex.Windows; -using Perspex.Windows.Threading; using Splat; namespace TestApplication