TemplateDefinition 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供设计时在 Web 服务器控件中定义模板元素的属性和方法。
public ref class TemplateDefinition : System::Web::UI::Design::DesignerObject
public class TemplateDefinition : System.Web.UI.Design.DesignerObject
type TemplateDefinition = class
inherit DesignerObject
Public Class TemplateDefinition
Inherits DesignerObject
- 继承
示例
下面的代码示例演示如何从 ControlDesigner 类派生自定义类。 此控件设计器支持包含四个可能模板的控件。
若要尝试,请添加对 System.Design.dll 程序集的引用,编译代码,然后在设计主机(如 Visual Studio 2005)中查看“设计”视图中的页面。 选择控件,单击操作列表以选择要修改的模板,然后使用拖放功能将控件移动到模板中。
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;
}
}
}
}
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>
注解
类 TemplateDefinition 提供了一个基模板定义类,该类可从控件设计器继承和扩展,以便在设计主机(如 Visual Studio 2005)中为模板化控件提供支持时使用。 设计主机使用 类的属性和方法 TemplateDefinition ,以便在设计时创建和编辑模板。
构造函数
TemplateDefinition(ControlDesigner, String, Object, String) |
使用所提供的设计器、模板名称、模板和属性名初始化 TemplateDefinition 类的新实例。 |
TemplateDefinition(ControlDesigner, String, Object, String, Boolean) |
使用所提供的设计器、模板名称、模板、属性名以及是否将模板内容限制为 Web 服务器控件来初始化 TemplateDefinition 类的新实例。 |
TemplateDefinition(ControlDesigner, String, Object, String, Style) |
使用所提供的设计器、模板名称、模板、属性名以及 TemplateDefinition 对象来初始化 Style 类的新实例。 |
TemplateDefinition(ControlDesigner, String, Object, String, Style, Boolean) |
使用所提供的设计器、模板名称、模板、属性名、TemplateDefinition 对象以及是否将内容限制为 Web 服务器控件来初始化 Style 类的新实例。 |
属性
AllowEditing |
获取一个值,该值指示模板是否允许编辑其内容。 |
Content |
获取或设置表示模板内容的 HTML 标记。 |
Designer |
获取关联的设计器组件。 (继承自 DesignerObject) |
Name |
获取对象的名称。 (继承自 DesignerObject) |
Properties |
获取对象的属性。 (继承自 DesignerObject) |
ServerControlsOnly |
检索一个值,该值指示模板是否应将内容限制为 Web 服务器控件,该值在 TemplateDefinition 构造函数中设置。 此属性为只读。 |
Style |
检索应当应用到模板的样式,该样式在 TemplateDefinition 构造函数中设置。 此属性为只读。 |
SupportsDataBinding |
检索或设置一个值,该值指示模板是否支持数据绑定。 |
TemplatedObject |
检索包含模板的组件。 此属性为只读。 |
TemplatePropertyName |
检索设计宿主应在属性网格中显示的模板的属性名称。 |
方法
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetService(Type) |
从设计宿主中获取由所提供的类型标识的服务。 (继承自 DesignerObject) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
IServiceProvider.GetService(Type) |
有关此成员的说明,请参见 GetService(Type)。 (继承自 DesignerObject) |