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 這樣的設計主機中,在設計檢視中查看該頁面。 選擇控制項,點選動作清單選擇要修改的範本,然後用拖放功能將控制項移入範本。
Note
你的專案必須有組件的 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。
建構函式
| 名稱 | Description |
|---|---|
| TemplatedControlDesigner() |
初始化 TemplatedControlDesigner 類別的新執行個體。 |
屬性
| 名稱 | Description |
|---|---|
| ActionLists |
取得控制設計器的動作清單集合。 (繼承來源 ControlDesigner) |
| ActiveTemplateEditingFrame |
已淘汰.
取得活躍的模板編輯框架。 |
| AllowResize |
會獲得一個值,表示控制項是否能在設計時環境中調整大小。 (繼承來源 ControlDesigner) |
| AssociatedComponents |
取得設計師管理的與該元件相關的元件集合。 (繼承來源 ComponentDesigner) |
| AutoFormats |
取得預設自動格式化方案集合,於設計時顯示於相關控制項的 自動格式 化對話框中。 (繼承來源 ControlDesigner) |
| Behavior |
已淘汰.
取得或設定與設計器相關的 DHTML 行為。 (繼承來源 HtmlControlDesigner) |
| CanEnterTemplateMode |
會有一個值,表示該設計師是否允許查看或編輯範本。 |
| Component |
取得設計師正在設計的元件。 (繼承來源 ComponentDesigner) |
| DataBindings |
取得目前控制項的資料綁定收集。 (繼承來源 HtmlControlDesigner) |
| DataBindingsEnabled |
會得到一個值,表示設計者是否允許資料綁定。 |
| DesignerState |
取得一個物件,用於在設計時持久化相關控制項的資料。 (繼承來源 ControlDesigner) |
| DesignTimeElement |
已淘汰.
取得代表該物件在設計表面上所關聯 HtmlControlDesigner 控制項的設計時物件。 (繼承來源 HtmlControlDesigner) |
| DesignTimeElementView |
已淘汰.
取得控制設計器的視控物件。 (繼承來源 ControlDesigner) |
| DesignTimeHtmlRequiresLoadComplete |
已淘汰.
會取得一個值,表示設計主機是否必須完成載入才能呼叫該 GetDesignTimeHtml 方法。 (繼承來源 ControlDesigner) |
| Expressions |
在設計時取得目前控制項的表達式綁定。 (繼承來源 HtmlControlDesigner) |
| HidePropertiesInTemplateMode |
會取得一個值,表示當控制項進入範本編輯模式時,控制項的屬性是否會被隱藏。 |
| HidePropertiesInTemplateMode |
會取得一個值,表示當控制項處於模板模式時,相關控制項的屬性是否被隱藏。 (繼承來源 ControlDesigner) |
| ID |
取得或設定控制項的 ID 字串。 (繼承來源 ControlDesigner) |
| InheritanceAttribute |
會獲得一個屬性,表示相關元件繼承的類型。 (繼承來源 ComponentDesigner) |
| Inherited |
會得到一個值,表示該元件是否為繼承。 (繼承來源 ComponentDesigner) |
| InTemplateMode |
已淘汰.
會取得一個值,表示設計器文件是否處於範本模式。 |
| IsDirty |
已淘汰.
取得或設定一個值,表示網頁伺服器控制項是否被標記為變更。 (繼承來源 ControlDesigner) |
| ParentComponent |
取得這個設計器的父元件。 (繼承來源 ComponentDesigner) |
| ReadOnly |
已淘汰.
取得或設定一個值,表示控制項屬性在設計時是否為唯讀。 (繼承來源 ControlDesigner) |
| RootDesigner |
取得包含相關控制項的網頁表單頁面的控制項設計器。 (繼承來源 ControlDesigner) |
| ShadowProperties |
會取得一組屬性值,覆蓋使用者設定。 (繼承來源 ComponentDesigner) |
| ShouldCodeSerialize |
已淘汰.
在序列化過程中,會取得或設定一個值,指示是否要在目前設計文件的程式碼背後檔案中為控制項建立欄位宣告。 (繼承來源 HtmlControlDesigner) |
| Tag |
取得一個代表相關控制項 HTML 標記元素的物件。 (繼承來源 ControlDesigner) |
| TemplateGroups |
會得到一組模板群組,每個群組都包含一個範本定義。 |
| UsePreviewControl |
會取得一個值,指示控制項設計者是否使用暫存預覽控制來產生設計時的 HTML 標記。 (繼承來源 ControlDesigner) |
| Verbs |
取得與設計者相關元件所支援的設計時動詞。 (繼承來源 ComponentDesigner) |
| ViewControl |
取得或設定一個網頁伺服器控制項,可用於預覽設計時的 HTML 標記。 (繼承來源 ControlDesigner) |
| ViewControlCreated |
取得或設定一個值,指示是否 |
| Visible |
會獲得一個值,表示該控制點在設計時是否可見。 (繼承來源 ControlDesigner) |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| 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) |