Classe AttributeCallbackBuilder

Un'istanza di questa classe viene passata ai delegati di callback per popolare lentamente gli attributi per un tipo.

Gerarchia di ereditarietà

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

Spazio dei nomi:  Microsoft.Windows.Design.Metadata
Assembly:  Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)

Sintassi

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

Il tipo AttributeCallbackBuilder espone i seguenti membri.

Proprietà

  Nome Descrizione
Proprietà pubblica CallbackType Ottiene il tipo per cui viene richiamato il callback.

In alto

Metodi

  Nome Descrizione
Metodo pubblico AddCustomAttributes(array<Attribute[]) Aggiunge il contenuto degli attributi specificati al generatore.
Metodo pubblico AddCustomAttributes(String, array<Attribute[]) Aggiunge attributi al membro con il nome specificato.
Metodo pubblico Equals Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protetto Finalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblico GetHashCode Funge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protetto MemberwiseClone Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Note

Utilizzare AttributeCallbackBuilder per popolare AttributeTable su richiesta. Questa funzione è particolarmente importante per le tabelle di attributi che contengono molti attributi. Se si specificano solo alcuni attributi per un tipo, utilizzare AttributeTableBuilder da solo.

Utilizzando il formato di delegato, non vengono costruiti attributi finché la finestra di progettazione non richiede metadati per il tipo di destinazione. AttributeTableBuilder trasferisce queste informazioni di callback in AttributeTable e le conserva. Pertanto, questi delegati di callback vengono richiamati solo su richiesta. Una volta richiamati, i relativi risultati vengono memorizzati nella cache da AttributeTable.

Abilitare la creazione di attributi su richiesta utilizzando il metodo AddCallback.

Esempi

Nell'esempio di codice seguente viene illustrato come creare e popolare una tabella di attributi utilizzando 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();
            }
        }
    }
}

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.Windows.Design.Metadata

AttributeTableBuilder

AddCallback

AttributeTable

Altre risorse

Procedura dettagliata: creazione di uno strumento decorativo visuale in fase di progettazione