TemplateGroup Class
A collection of TemplateDefinition objects representing the template elements in a Web server control at design time.
Namespace: System.Web.UI.Design
Assembly: System.Design (in system.design.dll)
System.Web.UI.Design.TemplateGroup
Assembly: System.Design (in system.design.dll)
Syntax
Visual Basic (Declaration)
Public Class TemplateGroup
Visual Basic (Usage)
Dim instance As TemplateGroup
C#
public class TemplateGroup
C++
public ref class TemplateGroup
J#
public class TemplateGroup
JScript
public class TemplateGroup
XAML
Not applicable.
Example
The following code example demonstrates how to create a control designer class that derives from the ControlDesigner class. This control designer supports a control with four possible templates.
To try it, compile the code, and then, in a design host such as Visual Studio 2005, look at the page in Design view. Select the control, click the action list to select a template to modify, and then use the drag-and-drop feature to move controls into the template.
Visual Basic
Imports Microsoft.VisualBasic Imports System Imports System.ComponentModel Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.Design Namespace ASPNet.Design.Samples ' Set an attribute reference to the designer, and define ' the HTML markup that the toolbox will write into the source. <Designer(GetType(TemplateGroupsSampleDesigner)), _ ToolboxData("<{0}:TemplateGroupsSample runat=server></{0}:TemplateGroupsSample>")> _ Public Class TemplateGroupsSample Inherits WebControl Implements INamingContainer ' Field for the templates Private _templates() As ITemplate ' Constructor Public Sub New() ReDim _templates(4) End Sub ' For each template property, set the designer attributes ' so the property does not appear in the property grid, but ' changes to the template are persisted in the control. <Browsable(False), _ PersistenceMode(PersistenceMode.InnerProperty)> _ Public Property Template1() As ITemplate Get Return _templates(0) End Get Set(ByVal Value As ITemplate) _templates(0) = Value End Set End Property <Browsable(False), _ PersistenceMode(PersistenceMode.InnerProperty)> _ Public Property Template2() As ITemplate Get Return _templates(1) End Get Set(ByVal Value As ITemplate) _templates(1) = Value End Set End Property <Browsable(False), _ PersistenceMode(PersistenceMode.InnerProperty)> _ Public Property Template3() As ITemplate Get Return _templates(2) End Get Set(ByVal Value As ITemplate) _templates(2) = Value End Set End Property <Browsable(False), _ PersistenceMode(PersistenceMode.InnerProperty)> _ Public Property Template4() As ITemplate Get Return _templates(3) End Get Set(ByVal Value As ITemplate) _templates(3) = Value End Set End Property Protected Overrides Sub CreateChildControls() ' Instantiate the template inside the panel ' then add the panel to the Controls collection Dim i As Integer For i = 0 To 3 Dim pan As New Panel() _templates(i).InstantiateIn(pan) Me.Controls.Add(pan) Next End Sub End Class ' Designer for the TemplateGroupsSample class Public Class TemplateGroupsSampleDesigner Inherits System.Web.UI.Design.ControlDesigner Private col As TemplateGroupCollection = Nothing Public Overrides Sub Initialize(ByVal Component As IComponent) ' Initialize the base MyBase.Initialize(Component) ' Turn on template editing SetViewFlags(ViewFlags.TemplateEditing, True) End Sub ' Add instructions to the placeholder view of the control Public Overloads Overrides Function GetDesignTimeHtml() As String Return CreatePlaceHolderDesignTimeHtml("Click here and use " & _ "the task menu to edit the templates.") End Function Public Overrides ReadOnly Property TemplateGroups() As TemplateGroupCollection Get If IsNothing(col) Then ' Get the base collection col = MyBase.TemplateGroups ' Create variables Dim tempGroup As TemplateGroup Dim tempDef As TemplateDefinition Dim ctl As TemplateGroupsSample ' Get reference to the component as TemplateGroupsSample ctl = CType(Component, TemplateGroupsSample) ' Create a TemplateGroup tempGroup = New TemplateGroup("Template Set A") ' Create a TemplateDefinition tempDef = New TemplateDefinition(Me, "Template A1", ctl, "Template1", True) ' Add the TemplateDefinition to the TemplateGroup tempGroup.AddTemplateDefinition(tempDef) ' Create another TemplateDefinition tempDef = New TemplateDefinition(Me, "Template A2", ctl, "Template2", True) ' Add the TemplateDefinition to the TemplateGroup tempGroup.AddTemplateDefinition(tempDef) ' Add the TemplateGroup to the TemplateGroupCollection col.Add(tempGroup) ' Create another TemplateGroup and populate it tempGroup = New TemplateGroup("Template Set B") tempDef = New TemplateDefinition(Me, "Template B1", ctl, "Template3", True) tempGroup.AddTemplateDefinition(tempDef) tempDef = New TemplateDefinition(Me, "Template B2", ctl, "Template4", True) tempGroup.AddTemplateDefinition(tempDef) ' Add the TemplateGroup to the TemplateGroupCollection col.Add(tempGroup) End If Return col End Get End Property ' Do not allow direct resizing unless in TemplateMode Public Overrides ReadOnly Property AllowResize() As Boolean Get If Me.InTemplateMode Then Return True Else Return False End If End Get End Property End Class End Namespace ... <%@ Page Language="VB" %> <%@ Register TagPrefix="aspSample" Namespace="ASPNet.Design.Samples" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <aspSample:TemplateGroupsSample runat="server" ID="TGSample1"> </aspSample:TemplateGroupsSample> </div> </form> </body> </html>
C#
using System; using System.ComponentModel; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.Design; namespace ASPNet.Design.Samples { // Set an attribute reference to the designer, and define // the HTML markup that the toolbox will write into the source. [Designer(typeof(TemplateGroupsSampleDesigner)), ToolboxData("<{0}:TemplateGroupsSample runat=server></{0}:TemplateGroupsSample>")] public sealed class TemplateGroupsSample : WebControl, INamingContainer { // Field for the templates private ITemplate[] _templates; // Constructor public TemplateGroupsSample() { _templates = new ITemplate[4]; } // For each template property, set the designer attributes // so the property does not appear in the property grid, but // changes to the template are persisted in the control. [Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)] public ITemplate Template1 { get { return _templates[0]; } set { _templates[0] = value; } } [Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)] public ITemplate Template2 { get { return _templates[1]; } set { _templates[1] = value; } } [Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)] public ITemplate Template3 { get { return _templates[2]; } set { _templates[2] = value; } } [Browsable(false), PersistenceMode(PersistenceMode.InnerProperty)] public ITemplate Template4 { get { return _templates[3]; } set { _templates[3] = value; } } protected override void CreateChildControls() { // Instantiate each template inside a panel // then add the panel to the Controls collection for (int i = 0; i < 4; i++) { Panel pan = new Panel(); _templates[i].InstantiateIn(pan); this.Controls.Add(pan); } } } // Designer for the TemplateGroupsSample control public class TemplateGroupsSampleDesigner : ControlDesigner { TemplateGroupCollection col = null; public override void Initialize(IComponent component) { // Initialize the base base.Initialize(component); // Turn on template editing SetViewFlags(ViewFlags.TemplateEditing, true); } // Add instructions to the placeholder view of the control public override string GetDesignTimeHtml() { return CreatePlaceHolderDesignTimeHtml("Click here and use " + "the task menu to edit the templates."); } public override TemplateGroupCollection TemplateGroups { get { if (col == null) { // Get the base collection col = base.TemplateGroups; // Create variables TemplateGroup tempGroup; TemplateDefinition tempDef; TemplateGroupsSample ctl; // Get reference to the component as TemplateGroupsSample ctl = (TemplateGroupsSample)Component; // Create a TemplateGroup tempGroup = new TemplateGroup("Template Set A"); // Create a TemplateDefinition tempDef = new TemplateDefinition(this, "Template A1", ctl, "Template1", true); // Add the TemplateDefinition to the TemplateGroup tempGroup.AddTemplateDefinition(tempDef); // Create another TemplateDefinition tempDef = new TemplateDefinition(this, "Template A2", ctl, "Template2", true); // Add the TemplateDefinition to the TemplateGroup tempGroup.AddTemplateDefinition(tempDef); // Add the TemplateGroup to the TemplateGroupCollection col.Add(tempGroup); // Create another TemplateGroup and populate it tempGroup = new TemplateGroup("Template Set B"); tempDef = new TemplateDefinition(this, "Template B1", ctl, "Template3", true); tempGroup.AddTemplateDefinition(tempDef); tempDef = new TemplateDefinition(this, "Template B2", ctl, "Template4", true); tempGroup.AddTemplateDefinition(tempDef); // Add the TemplateGroup to the TemplateGroupCollection col.Add(tempGroup); } return col; } } // Do not allow direct resizing unless in TemplateMode public override bool AllowResize { get { if (this.InTemplateMode) return true; else return false; } } } }
Inheritance Hierarchy
System.Object System.Web.UI.Design.TemplateGroup
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.Platforms
Windows 98, Windows Server 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.Version Information
.NET Framework
Supported in: 3.0, 2.0See Also