diff --git a/Perspex.Controls/Generators/ItemContainerGenerator`1.cs b/Perspex.Controls/Generators/ItemContainerGenerator`1.cs
new file mode 100644
index 0000000000..619bec6def
--- /dev/null
+++ b/Perspex.Controls/Generators/ItemContainerGenerator`1.cs
@@ -0,0 +1,40 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2015 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Controls.Generators
+{
+ using Perspex.Controls.Templates;
+
+ ///
+ /// Creates containers for items and maintains a list of created containers.
+ ///
+ /// The type of the container.
+ public class ItemContainerGenerator : ItemContainerGenerator where T : class, IContentControl, new()
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The owner control.
+ public ItemContainerGenerator(Control owner)
+ : base(owner)
+ {
+ }
+
+ ///
+ protected override IControl CreateContainer(object item, IDataTemplate itemTemplate)
+ {
+ T result = item as T;
+
+ if (result == null)
+ {
+ result = new T();
+ result.Content = this.Owner.MaterializeDataTemplate(item);
+ }
+
+ return result;
+ }
+ }
+}
diff --git a/Perspex.Controls/Generators/TypedItemContainerGenerator.cs b/Perspex.Controls/Generators/TypedItemContainerGenerator.cs
deleted file mode 100644
index aca08bc3a6..0000000000
--- a/Perspex.Controls/Generators/TypedItemContainerGenerator.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-// -----------------------------------------------------------------------
-//
-// Copyright 2014 MIT Licence. See licence.md for more information.
-//
-// -----------------------------------------------------------------------
-
-namespace Perspex.Controls.Generators
-{
- using Perspex.Controls.Templates;
-
- public class TypedItemContainerGenerator : ItemContainerGenerator where T : ContentControl, new()
- {
- public TypedItemContainerGenerator(Control owner)
- : base(owner)
- {
- }
-
- protected override IControl CreateContainer(object item, IDataTemplate itemTemplate)
- {
- T result = item as T;
-
- if (result == null)
- {
- result = new T();
- result.Content = this.Owner.MaterializeDataTemplate(item);
- }
-
- return result;
- }
- }
-}
diff --git a/Perspex.Controls/IContentControl.cs b/Perspex.Controls/IContentControl.cs
index 56aea20d37..ec6489e7f1 100644
--- a/Perspex.Controls/IContentControl.cs
+++ b/Perspex.Controls/IContentControl.cs
@@ -7,7 +7,7 @@ namespace Perspex.Controls
{
using Perspex.Layout;
- public interface IContentControl
+ public interface IContentControl : IControl
{
object Content { get; set; }
diff --git a/Perspex.Controls/ListBox.cs b/Perspex.Controls/ListBox.cs
index d085b38b61..6e02a0a1be 100644
--- a/Perspex.Controls/ListBox.cs
+++ b/Perspex.Controls/ListBox.cs
@@ -13,7 +13,7 @@ namespace Perspex.Controls
{
protected override IItemContainerGenerator CreateItemContainerGenerator()
{
- return new TypedItemContainerGenerator(this);
+ return new ItemContainerGenerator(this);
}
}
}
diff --git a/Perspex.Controls/Perspex.Controls.csproj b/Perspex.Controls/Perspex.Controls.csproj
index 8dd68a6c89..ea0d640022 100644
--- a/Perspex.Controls/Perspex.Controls.csproj
+++ b/Perspex.Controls/Perspex.Controls.csproj
@@ -91,7 +91,7 @@
-
+
diff --git a/Perspex.Controls/Primitives/TabStrip.cs b/Perspex.Controls/Primitives/TabStrip.cs
index 4a5eece014..069819ded7 100644
--- a/Perspex.Controls/Primitives/TabStrip.cs
+++ b/Perspex.Controls/Primitives/TabStrip.cs
@@ -45,7 +45,7 @@ namespace Perspex.Controls.Primitives
}
else
{
- result = new TypedItemContainerGenerator(this);
+ result = new ItemContainerGenerator(this);
}
////result.StateChanged += this.ItemsContainerGeneratorStateChanged;
diff --git a/Tests/Perspex.Controls.UnitTests/Presenters/DeckPresenterTests.cs b/Tests/Perspex.Controls.UnitTests/Presenters/DeckPresenterTests.cs
index 7cd807006a..abff01ccc6 100644
--- a/Tests/Perspex.Controls.UnitTests/Presenters/DeckPresenterTests.cs
+++ b/Tests/Perspex.Controls.UnitTests/Presenters/DeckPresenterTests.cs
@@ -34,7 +34,7 @@ namespace Perspex.Controls.UnitTests.Presenters
TemplatedParent = parent,
};
- Assert.IsType>(target.ItemContainerGenerator);
+ Assert.IsType>(target.ItemContainerGenerator);
}
[Fact]
@@ -76,7 +76,7 @@ namespace Perspex.Controls.UnitTests.Presenters
{
protected override IItemContainerGenerator CreateItemContainerGenerator()
{
- return new TypedItemContainerGenerator(this);
+ return new ItemContainerGenerator(this);
}
}
}
diff --git a/Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs b/Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs
index 1b71d8c000..8ea0724bf1 100644
--- a/Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs
+++ b/Tests/Perspex.Controls.UnitTests/Presenters/ItemsPresenterTests.cs
@@ -42,7 +42,7 @@ namespace Perspex.Controls.UnitTests.Presenters
Items = new[] { "foo", "bar" },
};
- target.ItemContainerGenerator = new TypedItemContainerGenerator(target);
+ target.ItemContainerGenerator = new ItemContainerGenerator(target);
target.ApplyTemplate();
Assert.Equal(2, target.Panel.Children.Count);
@@ -59,7 +59,7 @@ namespace Perspex.Controls.UnitTests.Presenters
TemplatedParent = parent,
};
- Assert.IsType>(target.ItemContainerGenerator);
+ Assert.IsType>(target.ItemContainerGenerator);
}
[Fact]
@@ -195,7 +195,7 @@ namespace Perspex.Controls.UnitTests.Presenters
{
protected override IItemContainerGenerator CreateItemContainerGenerator()
{
- return new TypedItemContainerGenerator(this);
+ return new ItemContainerGenerator(this);
}
}
}