Partager via


AttributeCallbackBuilder, classe

Une instance de cette classe est passée aux délégués de rappel pour remplir progressivement les attributs d'un type.

Hiérarchie d'héritage

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

Espace de noms :  Microsoft.Windows.Design.Metadata
Assembly :  Microsoft.Windows.Design.Extensibility (dans Microsoft.Windows.Design.Extensibility.dll)

Syntaxe

'Déclaration
Public NotInheritable Class AttributeCallbackBuilder
public sealed class AttributeCallbackBuilder
public ref class AttributeCallbackBuilder sealed
[<Sealed>]
type AttributeCallbackBuilder =  class end
public final class AttributeCallbackBuilder

Le type AttributeCallbackBuilder expose les membres suivants.

Propriétés

  Nom Description
Propriété publique CallbackType Obtient le type pour lequel ce rappel est appelé.

Début

Méthodes

  Nom Description
Méthode publique AddCustomAttributes(array<Attribute[]) Ajoute le contenu des attributs spécifiés à ce générateur.
Méthode publique AddCustomAttributes(String, array<Attribute[]) Ajoute des attributs au membre qui porte le nom spécifié.
Méthode publique Equals Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)

Début

Notes

Utilisez AttributeCallbackBuilder pour remplir un AttributeTable à la demande. C'est particulièrement important pour les tables d'attributs qui contiennent de nombreux attributs. Si vous ne spécifiez que quelques attributs pour un type, utilisez AttributeTableBuilder par lui-même.

Avec le format de délégué, aucun attribut n'est construit tant que le concepteur n'a pas demandé de métadonnées pour le type de cible. Le AttributeTableBuilder transfère cette information de rappel dans le AttributeTable et la conserve. Par conséquent, ces délégués de rappel sont appelés uniquement à la demande. Une fois appelés, leurs résultats sont mis en cache par le AttributeTable.

Activez la création d'attribut à la demande à l'aide de la méthode AddCallback.

Exemples

L'exemple de code suivant indique comment créer et remplir une table d'attributs à l'aide de la classe 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();
            }
        }
    }
}

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Microsoft.Windows.Design.Metadata, espace de noms

AttributeTableBuilder

AddCallback

AttributeTable

Autres ressources

Procédure pas à pas : création d'un ornement au moment du design