diff --git a/Perspex.UnitTests/Perspex.UnitTests.csproj b/Perspex.UnitTests/Perspex.UnitTests.csproj
index e2fea584b7..a990c1c6cb 100644
--- a/Perspex.UnitTests/Perspex.UnitTests.csproj
+++ b/Perspex.UnitTests/Perspex.UnitTests.csproj
@@ -75,7 +75,6 @@
-
diff --git a/Perspex.UnitTests/Styling/SelectorTests_Id.cs b/Perspex.UnitTests/Styling/SelectorTests_Id.cs
index 4c186b5762..b54ca0978f 100644
--- a/Perspex.UnitTests/Styling/SelectorTests_Id.cs
+++ b/Perspex.UnitTests/Styling/SelectorTests_Id.cs
@@ -44,15 +44,6 @@ namespace Perspex.UnitTests.Styling
CollectionAssert.AreEqual(new[] { false }, target.GetActivator().Take(1).ToEnumerable().ToArray());
}
- [TestMethod]
- public void Id_Matches_Control_With_TemplatedParent_After_InTemplateOf()
- {
- var control = new Control1 { Id = "foo", TemplatedParent = new TemplatedControl1() };
- var target = control.Select().InTemplateOf().Id("foo");
-
- CollectionAssert.AreEqual(new[] { true }, target.GetActivator().Take(1).ToEnumerable().ToArray());
- }
-
[TestMethod]
public void When_Id_Matches_Control_Other_Selectors_Are_Subscribed()
{
diff --git a/Perspex.Windows/Renderer.cs b/Perspex.Windows/Renderer.cs
index 00a669f73a..dd97d0b05a 100644
--- a/Perspex.Windows/Renderer.cs
+++ b/Perspex.Windows/Renderer.cs
@@ -71,7 +71,7 @@ namespace Perspex.Windows
/// Renders the specified visual.
///
/// The visual to render.
- public void Render(Visual visual)
+ public void Render(IVisual visual)
{
using (DrawingContext context = new DrawingContext(this.renderTarget, this.DirectWriteFactory))
{
@@ -94,7 +94,7 @@ namespace Perspex.Windows
///
/// The visual to render.
/// The drawing context.
- private void Render(Visual visual, DrawingContext context)
+ private void Render(IVisual visual, DrawingContext context)
{
visual.Render(context);
diff --git a/Perspex.Windows/Window.cs b/Perspex.Windows/Window.cs
index 4727dffce3..6d2cffdaaf 100644
--- a/Perspex.Windows/Window.cs
+++ b/Perspex.Windows/Window.cs
@@ -164,7 +164,7 @@ namespace Perspex.Windows
control.IsMouseOver = visual.Bounds.Contains(p);
}
- foreach (Visual child in visual.VisualChildren)
+ foreach (Visual child in ((IVisual)visual).VisualChildren)
{
this.MouseMove(child, p - visual.Bounds.Position);
}
diff --git a/Perspex/ControlTemplate.cs b/Perspex/ControlTemplate.cs
index 1d22e2d775..35151b90d5 100644
--- a/Perspex/ControlTemplate.cs
+++ b/Perspex/ControlTemplate.cs
@@ -46,7 +46,7 @@ namespace Perspex
control.TemplatedParent = templatedParent;
- foreach (Control child in control.VisualChildren.OfType())
+ foreach (Control child in ((IVisual)control).VisualChildren.OfType())
{
this.SetTemplatedParent(child, templatedParent);
}
diff --git a/Perspex/Controls/ContentControl.cs b/Perspex/Controls/ContentControl.cs
index a84daaabcd..adefd89cfc 100644
--- a/Perspex/Controls/ContentControl.cs
+++ b/Perspex/Controls/ContentControl.cs
@@ -24,7 +24,7 @@ namespace Perspex.Controls
if (control != null)
{
- control.VisualParent = this;
+ ((IVisual)control).VisualParent = this;
control.SetValue(ParentPropertyRW, this);
}
});
@@ -38,7 +38,7 @@ namespace Perspex.Controls
protected override Size ArrangeContent(Size finalSize)
{
- Control child = this.VisualChildren.SingleOrDefault() as Control;
+ Control child = ((IVisual)this).VisualChildren.SingleOrDefault() as Control;
if (child != null)
{
@@ -53,7 +53,7 @@ namespace Perspex.Controls
protected override Size MeasureContent(Size availableSize)
{
- Control child = this.VisualChildren.SingleOrDefault() as Control;
+ Control child = ((IVisual)this).VisualChildren.SingleOrDefault() as Control;
if (child != null)
{
diff --git a/Perspex/Controls/ContentPresenter.cs b/Perspex/Controls/ContentPresenter.cs
index 641363ff92..4227db97a4 100644
--- a/Perspex/Controls/ContentPresenter.cs
+++ b/Perspex/Controls/ContentPresenter.cs
@@ -11,7 +11,7 @@ namespace Perspex.Controls
using System.Linq;
using Perspex.Media;
- public class ContentPresenter : Control
+ public class ContentPresenter : Control, IVisual
{
public static readonly PerspexProperty