Compartilhar via


Delegado AttributeCallback

Chamado quando os atributos são necessários para um tipo.

Namespace:  Microsoft.Windows.Design.Metadata
Assembly:  Microsoft.Windows.Design.Extensibility (em Microsoft.Windows.Design.Extensibility.dll)

Sintaxe

'Declaração
Public Delegate Sub AttributeCallback ( _
    builder As AttributeCallbackBuilder _
)
public delegate void AttributeCallback(
    AttributeCallbackBuilder builder
)
public delegate void AttributeCallback(
    AttributeCallbackBuilder^ builder
)
type AttributeCallback = 
    delegate of 
        builder:AttributeCallbackBuilder -> unit
O JScript não oferece suporte a delegados.

Parâmetros

Comentários

Use o AttributeCallback delegar ao preencher uma tabela grande atributo. Usando o padrão de retorno de chamada, o preenchimento da tabela de atributos é adiado até que o designer precisa os metadados de tempo de design para um tipo.

Exemplos

O exemplo de código a seguir mostra como criar e preencher uma tabela de atributo usando o AttributeCallbackBuilder classe.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Reflection;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows;

using Microsoft.Windows.Design.Features;
using Microsoft.Windows.Design.Metadata;

// The ProvideMetadata assembly-level attribute indicates to designers
// that this assembly contains a class that provides an attribute table. 
[assembly: ProvideMetadata(typeof(CustomControlLibrary.VisualStudio.Design.Metadata))]

namespace CustomControlLibrary.VisualStudio.Design
{
    // Container for any general design-time metadata to initialize.
    // Designers look for a type in the design-time assembly that 
    // implements IProvideAttributeTable. If found, designers instantiate 
    // this class and access its AttributeTable property automatically.
    internal class Metadata : IProvideAttributeTable
    {
        // Accessed by the designer to register any design-time metadata.
        public AttributeTable AttributeTable
        {
            get
            {
                AttributeTableBuilder builder = new AttributeTableBuilder();

                // Build the attribute table by using the AttributeCallbackBuilder 
                // class. The attribute table is not populated until the designer
                // needs it, which is more efficient for large attribute tables.
                builder.AddCallback(
                    typeof(Button),
                    delegate(AttributeCallbackBuilder callbackBuilder)
                    {
                        callbackBuilder.AddCustomAttributes(
                            new DefaultPropertyAttribute("Content"));

                        // Apply the ReadOnlyAttribute to the Background property 
                        // of the Button class.
                        callbackBuilder.AddCustomAttributes(
                            "Background",
                            new ReadOnlyAttribute(true));
                    });

                return builder.CreateTable();
            }
        }
    }
}

Consulte também

Referência

Namespace Microsoft.Windows.Design.Metadata

AttributeTableBuilder

AddCallback

AttributeTable

Outros recursos

Walkthrough: Criando um adorno em tempo de design

Noções básicas sobre extensibilidade Designer WPF