Condividi tramite


TemplateDefinition Classe

Definizione

Fornisce proprietà e metodi che definiscono un elemento di modello in un controllo server Web in fase di progettazione.

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
Ereditarietà
TemplateDefinition

Esempio

Nell'esempio di codice seguente viene illustrato come derivare una classe personalizzata dalla ControlDesigner classe . Questa finestra di progettazione controlli supporta un controllo con quattro modelli possibili.

Per provarlo, aggiungere un riferimento all'assembly System.Design.dll, compilare il codice e quindi, in un host di progettazione come Visual Studio 2005, esaminare la pagina in visualizzazione Progettazione. Selezionare il controllo, fare clic sull'elenco di azioni per selezionare un modello da modificare e quindi usare la funzionalità di trascinamento della selezione per spostare i controlli nel modello.

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>

Commenti

La TemplateDefinition classe fornisce una classe di definizione del modello di base che può essere ereditata e estesa per un progettista di controlli da usare per fornire il supporto per i controlli basato su modelli in un host di progettazione, ad esempio Visual Studio 2005. Un host di progettazione usa le proprietà e i metodi della TemplateDefinition classe per facilitare la creazione e la modifica di un modello in fase di progettazione.

Costruttori

TemplateDefinition(ControlDesigner, String, Object, String)

Inizializza una nuova istanza della classe TemplateDefinition, utilizzando la finestra di progettazione, il nome di modello, il modello e il nome di proprietà forniti.

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

Inizializza una nuova istanza della classe TemplateDefinition, utilizzando la finestra di progettazione, il nome di modello, il modello e il nome di proprietà forniti e specificando se il contenuto del modello deve essere limitato a controlli server Web.

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

Inizializza una nuova istanza della classe TemplateDefinition, utilizzando la finestra di progettazione, il nome di modello, il modello, il nome di proprietà e l'oggetto Style forniti.

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

Inizializza una nuova istanza della classe TemplateDefinition, utilizzando la finestra di progettazione, il nome di modello, il modello, il nome di proprietà e l'oggetto Style forniti e specificando se il contenuto deve essere limitato a controlli server Web.

Proprietà

AllowEditing

Ottiene un valore che indica se la modifica del contenuto deve essere attivata nel modello.

Content

Ottiene o imposta il markup HTML che rappresenta il contenuto del modello.

Designer

Ottiene il componente della finestra di progettazione associato.

(Ereditato da DesignerObject)
Name

Ottiene il nome dell'oggetto.

(Ereditato da DesignerObject)
Properties

Ottiene il nome delle proprietà dell'oggetto.

(Ereditato da DesignerObject)
ServerControlsOnly

Recupera un valore che indica se il contenuto del modello deve essere limitato a controlli server Web, in base all'impostazione del costruttore TemplateDefinition. Questa proprietà è di sola lettura.

Style

Recupera lo stile da applicare al modello, in base all'impostazione del costruttore TemplateDefinition. Questa proprietà è di sola lettura.

SupportsDataBinding

Recupera o imposta un valore che indica se il modello supporta l'associazione dati.

TemplatedObject

Recupera il componente in cui risiede il modello. Questa proprietà è di sola lettura.

TemplatePropertyName

Recupera il nome di proprietà per il modello che deve essere visualizzato dall'host di progettazione nella griglia delle proprietà.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetService(Type)

Ottiene un servizio dall'host di progettazione, come identificato dal tipo fornito.

(Ereditato da DesignerObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IServiceProvider.GetService(Type)

Per una descrizione di questo membro, vedere GetService(Type).

(Ereditato da DesignerObject)

Metodi di estensione

GetKeyedService<T>(IServiceProvider, Object)

Ottiene un servizio di tipo T dall'oggetto IServiceProvider.

GetKeyedServices(IServiceProvider, Type, Object)

Ottiene un'enumerazione dei servizi di tipo serviceType dall'oggetto IServiceProvider.

GetKeyedServices<T>(IServiceProvider, Object)

Ottiene un'enumerazione dei servizi di tipo T dall'oggetto IServiceProvider.

GetRequiredKeyedService(IServiceProvider, Type, Object)

Ottiene un servizio di tipo serviceType dall'oggetto IServiceProvider.

GetRequiredKeyedService<T>(IServiceProvider, Object)

Ottiene un servizio di tipo T dall'oggetto IServiceProvider.

CreateAsyncScope(IServiceProvider)

Crea un nuovo oggetto AsyncServiceScope che è possibile usare per risolvere i servizi con ambito.

CreateScope(IServiceProvider)

Crea un nuovo oggetto IServiceScope che è possibile usare per risolvere i servizi con ambito.

GetRequiredService(IServiceProvider, Type)

Ottiene il servizio di tipo serviceType da IServiceProvider.

GetRequiredService<T>(IServiceProvider)

Ottiene il servizio di tipo T da IServiceProvider.

GetService<T>(IServiceProvider)

Ottiene il servizio di tipo T da IServiceProvider.

GetServices(IServiceProvider, Type)

Ottiene un'enumerazione di servizi di tipo serviceType da IServiceProvider.

GetServices<T>(IServiceProvider)

Ottiene un'enumerazione di servizi di tipo T da IServiceProvider.

GetFakeLogCollector(IServiceProvider)

Ottiene l'oggetto che raccoglie i record di log inviati al logger falso.

GetFakeRedactionCollector(IServiceProvider)

Ottiene l'istanza dell'agente di raccolta redactor falso dal contenitore di inserimento delle dipendenze.

Si applica a

Vedi anche