TemplateDefinition クラス

定義

デザイン時に Web サーバー コントロールのテンプレート要素を定義するプロパティおよびメソッドを提供します。Provides properties and methods that define a template element in a Web server control at design time.

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
継承
TemplateDefinition

次のコード例は、 ControlDesignerクラスからカスタムクラスを派生させる方法を示しています。The following code example demonstrates how to derive a custom class from the ControlDesigner class. このコントロールデザイナーは、可能な4つのテンプレートを持つコントロールをサポートしています。This control designer supports a control with four possible templates.

これを試すには、system.servicemodel アセンブリへの参照を追加し、コードをコンパイルします。次に、などVisual Studio 2005Visual Studio 2005のデザインホストで、デザインビューのページを確認します。To try it, add a reference to the System.Design.dll assembly, compile the code, and then, in a design host such as Visual Studio 2005Visual 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.

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 2005Visual Studio 2005のデザインホストでテンプレート化されたコントロールのサポートを提供するために、コントロールデザイナーが継承および拡張できる基本テンプレート定義クラスを提供します。The TemplateDefinition class provides a base template definition class that can be inherited from and extended for a control designer to use in providing support for templated controls in a design host such as Visual Studio 2005Visual Studio 2005. デザインホストでは、 TemplateDefinitionクラスのプロパティとメソッドを使用して、デザイン時のテンプレートの作成と編集を容易にします。A design host uses the properties and methods of the TemplateDefinition class to facilitate creating and editing a template at design time.

コンストラクター

TemplateDefinition(ControlDesigner, String, Object, String)

指定したデザイナー、テンプレート名、テンプレート、およびプロパティ名を使用して、TemplateDefinition クラスの新しいインスタンスを初期化します。Initializes a new instance of the TemplateDefinition class, using the provided designer, template name, template, and property name.

TemplateDefinition(ControlDesigner, String, Object, String, Boolean)

指定したデザイナー、テンプレート名、テンプレート、プロパティ名を使用して、さらに、テンプレート コンテンツを Web サーバー コントロールに限定するかどうかを指定して、TemplateDefinition クラスの新しいインスタンスを初期化します。Initializes a new instance of the TemplateDefinition class, using the provided designer, template name, template, property name, and whether to limit the template contents to Web server controls.

TemplateDefinition(ControlDesigner, String, Object, String, Style)

指定したデザイナー、テンプレート名、テンプレート、プロパティ名、および TemplateDefinition オブジェクトを使用して、Style クラスの新しいインスタンスを初期化します。Initializes a new instance of the TemplateDefinition class, using the provided designer, template name, template, property name, and Style object.

TemplateDefinition(ControlDesigner, String, Object, String, Style, Boolean)

指定したデザイナー、テンプレート名、テンプレート、プロパティ名、TemplateDefinition オブジェクトを使用して、さらに、コンテンツを Web サーバー コントロールに限定するかどうかを指定して、Style クラスの新しいインスタンスを初期化します。Initializes a new instance of the TemplateDefinition class, using the provided designer, template name, template, property name, Style object, and whether to limit content to Web server controls.

プロパティ

AllowEditing

テンプレート コンテンツを編集できるかどうかを示す値を取得します。Gets a value that indicates whether the template should enable editing of its contents.

Content

テンプレート コンテンツを表す HTML マークアップを取得または設定します。Gets or sets the HTML markup representing the content of the template.

Designer

関連付けられたデザイナー コンポーネントを取得します。Gets the associated designer component.

(継承元 DesignerObject)
Name

オブジェクトの名前を取得します。Gets the name of the object.

(継承元 DesignerObject)
Properties

オブジェクトのプロパティを取得します。Gets the object's properties.

(継承元 DesignerObject)
ServerControlsOnly

テンプレート コンテンツを、TemplateDefinition コンストラクターで設定された Web サーバー コントロールに限定するかどうかを示す値を取得します。Retrieves a value indicating whether the template should limit content to Web server controls, as set in the TemplateDefinition constructor. このプロパティは読み取り専用です。This property is read-only.

Style

TemplateDefinition コンストラクターで設定されたテンプレートに適用するスタイルを取得します。Retrieves the style that should be applied to the template as set in the TemplateDefinition constructor. このプロパティは読み取り専用です。This property is read-only.

SupportsDataBinding

テンプレートがデータ バインディングをサポートするかどうかを示す値を取得または設定します。Retrieves or sets a value indicating whether the template supports data binding.

TemplatedObject

テンプレートの配置されているコンポーネントを取得します。Retrieves the component in which the template resides. このプロパティは読み取り専用です。This property is read-only.

TemplatePropertyName

プロパティ グリッド内にデザイン ホストが表示するテンプレートのプロパティ名を取得します。Retrieves the property name for the template that the design host should display in the property grid.

メソッド

Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetService(Type)

指定した型で識別されるサービスをデザイン ホストから取得します。Gets a service from the design host, as identified by the provided type.

(継承元 DesignerObject)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

明示的なインターフェイスの実装

IServiceProvider.GetService(Type)

このメンバーの詳細については、「GetService(Type)」をご覧ください。For a description of this member, see GetService(Type).

(継承元 DesignerObject)

適用対象

こちらもご覧ください