Compartilhar via


Classe AttributeCallbackBuilder

Uma instância dessa classe é passada para delegados de retorno de chamada para ociosamente preencher os atributos de um tipo.

Hierarquia de herança

System.Object
  Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder

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

Sintaxe

'Declaração
Public NotInheritable Class AttributeCallbackBuilder
public sealed class AttributeCallbackBuilder
public ref class AttributeCallbackBuilder sealed
[<Sealed>]
type AttributeCallbackBuilder =  class end
public final class AttributeCallbackBuilder

O tipo AttributeCallbackBuilder expõe os membros a seguir.

Propriedades

  Nome Descrição
Propriedade pública CallbackType Obtém o tipo que esse retorno de chamada está sendo solicitado.

Início

Métodos

  Nome Descrição
Método público AddCustomAttributes(array<Attribute[]) Adiciona o conteúdo dos atributos especificados para esse construtor.
Método público AddCustomAttributes(String, array<Attribute[]) Adiciona atributos para o membro com o nome especificado.
Método público Equals Determina se o especificado Object é igual a atual Object. (Herdado de Object.)
Método protegido Finalize Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado pela coleta de lixo. (Herdado de Object.)
Método público GetHashCode Serves as a hash function for a particular type. (Herdado de Object.)
Método público GetType Obtém o Type da instância atual. (Herdado de Object.)
Método protegido MemberwiseClone Cria uma cópia superficial do atual Object. (Herdado de Object.)
Método público ToString Retorna um string que representa o objeto atual. (Herdado de Object.)

Início

Comentários

Use o AttributeCallbackBuilder para preencher um AttributeTable em demanda. Isso é especialmente importante para as tabelas de atributos que mantêm muitos atributos. Se você estiver especificando somente alguns atributos para um tipo, use o AttributeTableBuilder por si só.

Usando o formato do delegado, sem atributos são construídos até que os metadados para o tipo de destino é solicitado pelo designer. O AttributeTableBuilder transfere essa informação de retorno de chamada para o AttributeTable e preserva o proprietário. Portanto, esses delegados de retorno de chamada só são invocados sob demanda. Uma vez chamado, seus resultados são armazenados em cache pelo AttributeTable.

Habilitar a criação de demanda de atributo usando o AddCallback método.

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();
            }
        }
    }
}

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.Windows.Design.Metadata

AttributeTableBuilder

AddCallback

AttributeTable

Outros recursos

Walkthrough: Criando um adorno em tempo de design