Browse Source

Make TemplatedParent inherit.

pull/4/head
Steven Kirk 12 years ago
parent
commit
b2806a77a9
  1. 1
      Perspex/Controls/ContentPresenter.cs
  2. 12
      Perspex/Controls/Control.cs
  3. 18
      Perspex/Controls/ControlTemplate.cs
  4. 14
      TestApplication/Program.cs

1
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;
}
}

12
Perspex/Controls/Control.cs

@ -38,6 +38,9 @@ namespace Perspex.Controls
public static readonly PerspexProperty<Control> ParentProperty =
PerspexProperty.Register<Control, Control>("Parent");
public static readonly PerspexProperty<ITemplatedControl> TemplatedParentProperty =
PerspexProperty.Register<Control, ITemplatedControl>("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

18
Perspex/Controls/ControlTemplate.cs

@ -34,24 +34,8 @@ namespace Perspex.Controls
Contract.Requires<NullReferenceException>(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<NullReferenceException>(control != null);
Contract.Requires<NullReferenceException>(templatedParent != null);
control.TemplatedParent = templatedParent;
if (!(control is ContentPresenter))
{
foreach (Control child in ((IVisual)control).VisualChildren.OfType<Control>())
{
this.SetTemplatedParent(child, templatedParent);
}
}
}
}
}

14
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

Loading…
Cancel
Save