Compartir a través de


AttributeCallbackBuilder (Clase)

Una instancia de esta clase se pasa a los delegados de devolución de llamada para rellenar lentamente los atributos para un tipo.

Jerarquía de herencia

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

Espacio de nombres:  Microsoft.Windows.Design.Metadata
Ensamblado:  Microsoft.Windows.Design.Extensibility (en Microsoft.Windows.Design.Extensibility.dll)

Sintaxis

'Declaración
Public NotInheritable Class AttributeCallbackBuilder
public sealed class AttributeCallbackBuilder
public ref class AttributeCallbackBuilder sealed
[<Sealed>]
type AttributeCallbackBuilder =  class end
public final class AttributeCallbackBuilder

El tipo AttributeCallbackBuilder expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública CallbackType Obtiene el tipo para el que se invoca esta devolución de llamada.

Arriba

Métodos

  Nombre Descripción
Método público AddCustomAttributes(array<Attribute[]) Agrega el contenido de los atributos especificados a este generador.
Método público AddCustomAttributes(String, array<Attribute[]) Agrega los atributos al miembro con el nombre especificado.
Método público Equals Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegido Finalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método público GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de Object).
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método protegido MemberwiseClone Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).

Arriba

Comentarios

Utilice el método AttributeCallbackBuilder para rellenar un objeto AttributeTable a petición. Esto es especialmente importante para las tablas de atributos que contienen muchos atributos. Si está especificando sólo unos cuantos atributos para un tipo, use únicamente AttributeTableBuilder.

Con el formato de delegado, no se construye ningún atributo hasta que el diseñador solicita los metadatos para el tipo de destino. AttributeTableBuilder transfiere esta información de devolución de llamada a AttributeTable y la conserva. Por consiguiente, estos delegados de devolución de llamada sólo se invocan a petición. Una vez invocados, AttributeTable almacena sus resultados en memoria caché.

Habilite la creación de atributos a petición con el método AddCallback.

Ejemplos

En el siguiente ejemplo de código se muestra cómo crear y rellenar una tabla de atributos mediante la clase AttributeCallbackBuilder.

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

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Referencia

Microsoft.Windows.Design.Metadata (Espacio de nombres)

AttributeTableBuilder

AddCallback

AttributeTable

Otros recursos

Tutorial: Crear un adorno en tiempo de diseño