TemplatedControlDesigner 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
扩展基于模板的服务器控件的设计时行为。
public ref class TemplatedControlDesigner abstract : System::Web::UI::Design::ControlDesigner
public abstract class TemplatedControlDesigner : System.Web.UI.Design.ControlDesigner
type TemplatedControlDesigner = class
inherit ControlDesigner
Public MustInherit Class TemplatedControlDesigner
Inherits ControlDesigner
- 继承
- 派生
示例
下面的代码示例演示如何创建使用模板并从 类派生 ControlDesigner 的控件设计器类。
若要运行该示例,请编译代码,然后在设计主机(如 Visual Studio 2005)中,在“设计”视图中查看页面。 选择控件,单击操作列表以选择要修改的模板,然后使用拖放功能将控件移动到模板中。
注意
项目必须具有对程序集的 System.Design
引用。
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>
实施者说明
虽然此类未过时,但没有必要,因为模板编辑功能已内置到 中 ControlDesigner。
构造函数
TemplatedControlDesigner() |
初始化 TemplatedControlDesigner 类的新实例。 |
属性
ActionLists |
获取控件设计器的操作列表集合。 (继承自 ControlDesigner) |
ActiveTemplateEditingFrame |
已过时.
获取活动的模板编辑框。 |
AllowResize |
获取一个值,该值指示是否可以在设计时环境中调整控件的大小。 (继承自 ControlDesigner) |
AssociatedComponents |
获取与设计器所管理的组件关联的组件集合。 (继承自 ComponentDesigner) |
AutoFormats |
获取预定义自动格式设置方案的集合,这些方案将在设计时显示于关联控件的“自动套用格式”对话框中。 (继承自 ControlDesigner) |
Behavior |
已过时.
获取或设置与设计器关联的 DHTML 行为。 (继承自 HtmlControlDesigner) |
CanEnterTemplateMode |
获取一个值,该值指示此设计器是否允许查看或编辑模板。 |
Component |
获取此设计器正在设计的组件。 (继承自 ComponentDesigner) |
DataBindings |
获取当前控件的数据绑定集合。 (继承自 HtmlControlDesigner) |
DataBindingsEnabled |
获取一个值,该值指示设计器是否允许数据绑定。 |
DataBindingsEnabled |
获取一个值,该值指示包含关联控件的区域是否支持数据绑定。 (继承自 ControlDesigner) |
DesignerState |
获取用于在设计时保持关联控件数据的对象。 (继承自 ControlDesigner) |
DesignTimeElement |
已过时.
获取一个设计时对象,该对象表示与设计图面上的 HtmlControlDesigner 对象关联的控件。 (继承自 HtmlControlDesigner) |
DesignTimeElementView |
已过时.
获取控件设计器的视图控件对象。 (继承自 ControlDesigner) |
DesignTimeHtmlRequiresLoadComplete |
已过时.
获取一个值,该值指示是否必须在设计宿主完成加载之后才能调用 GetDesignTimeHtml 方法。 (继承自 ControlDesigner) |
Expressions |
获取当前控件在设计时的表达式绑定。 (继承自 HtmlControlDesigner) |
HidePropertiesInTemplateMode |
获取一个值,该值指示当控件被置于模板编辑模式时是否将隐藏控件的属性。 |
HidePropertiesInTemplateMode |
获取一个值,该值指示当控件处于模板模式时,关联控件的属性是否被隐藏。 (继承自 ControlDesigner) |
ID |
获取或设置控件的 ID 字符串。 (继承自 ControlDesigner) |
InheritanceAttribute |
获取一个特性,该特性指示关联组件的继承类型。 (继承自 ComponentDesigner) |
Inherited |
获取一个值,该值指示是否继承此组件。 (继承自 ComponentDesigner) |
InTemplateMode |
已过时.
获取一个值,该值指示设计器文档是否处于模板模式。 |
IsDirty |
已过时.
获取或设置一个值,该值指示 Web 服务器控件是否已被标记为已更改。 (继承自 ControlDesigner) |
ParentComponent |
获取此设计器的父组件。 (继承自 ComponentDesigner) |
ReadOnly |
已过时.
获取或设置一个值,该值指示控件的属性在设计时是否为只读。 (继承自 ControlDesigner) |
RootDesigner |
获取包含关联控件的 Web 窗体页的控件设计器。 (继承自 ControlDesigner) |
SetTextualDefaultProperty |
扩展基于模板的服务器控件的设计时行为。 (继承自 ComponentDesigner) |
ShadowProperties |
获取重写用户设置的属性值的集合。 (继承自 ComponentDesigner) |
ShouldCodeSerialize |
已过时.
获取或设置一个值,该值指示在序列化期间是否应为当前设计文档在代码隐藏文件中创建控件的字段声明。 (继承自 HtmlControlDesigner) |
Tag |
获取表示关联控件的 HTML 标记元素的对象。 (继承自 ControlDesigner) |
TemplateGroups |
获取模板组的集合,每个模板组都包含一个模板定义。 |
TemplateGroups |
获取一个模板组集合,其中每个模板组包含一个或多个模板定义。 (继承自 ControlDesigner) |
UsePreviewControl |
获取一个值,该值指示控件设计器是否使用临时预览控件来生成设计时 HTML 标记。 (继承自 ControlDesigner) |
Verbs |
获取与设计器相关联的组件所支持的设计时谓词。 (继承自 ComponentDesigner) |
ViewControl |
获取或设置可用于预览设计时 HTML 标记的 Web 服务器控件。 (继承自 ControlDesigner) |
ViewControlCreated |
获取或设置一个值,该值指示是否已创建 |
Visible |
获取指示该控件在设计时是否可见的值。 (继承自 ControlDesigner) |
方法
显式接口实现
IDesignerFilter.PostFilterAttributes(IDictionary) |
有关此成员的说明,请参见 PostFilterAttributes(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PostFilterEvents(IDictionary) |
有关此成员的说明,请参见 PostFilterEvents(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PostFilterProperties(IDictionary) |
有关此成员的说明,请参见 PostFilterProperties(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PreFilterAttributes(IDictionary) |
有关此成员的说明,请参见 PreFilterAttributes(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PreFilterEvents(IDictionary) |
有关此成员的说明,请参见 PreFilterEvents(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PreFilterProperties(IDictionary) |
有关此成员的说明,请参见 PreFilterProperties(IDictionary) 方法。 (继承自 ComponentDesigner) |
ITreeDesigner.Children |
有关此成员的说明,请参见 Children 属性。 (继承自 ComponentDesigner) |
ITreeDesigner.Parent |
有关此成员的说明,请参见 Parent 属性。 (继承自 ComponentDesigner) |