Freigeben über


AttributeCallbackBuilder-Klasse

Eine Instanz dieser Klasse wird an Rückrufdelegate übergeben, um die Attribute für einen Typ sehr langsam zu füllen.

Vererbungshierarchie

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

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

Syntax

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

Der AttributeCallbackBuilder-Typ macht die folgenden Member verfügbar.

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft CallbackType Ruft den Typ ab, für den dieser Rückruf aufgerufen wird.

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode AddCustomAttributes(array<Attribute[]) Fügt diesem Generator die Inhalte der angegebenen Attribute hinzu.
Öffentliche Methode AddCustomAttributes(String, array<Attribute[]) Fügt Attribute zu dem Member mit dem angegebenen Namen hinzu.
Öffentliche Methode Equals Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)

Zum Seitenanfang

Hinweise

Verwenden Sie den AttributeCallbackBuilder, um die AttributeTable bei Bedarf zu füllen. Dies ist bei Attributtabellen mit zahlreichen Attributen von besonderer Wichtigkeit. Wenn Sie für einen Typ nur einige Attribute angeben, verwenden Sie allein AttributeTableBuilder.

Bei Verwendung des Delegatformats werden so lange keine Attribute erstellt, bis vom Designer Metadaten für den Zieltyp angefordert werden. Diese Rückrufinformationen werden vom AttributeTableBuilder in die AttributeTable übertragen und dort aufbewahrt. Daher werden diese Rückrufdelegaten nur bei Bedarf aufgerufen. Nach erstmaligem Aufruf werden ihre Ergebnisse in der AttributeTable zwischengespeichert.

Mit der AddCallback-Methode können Sie die bedarfsabhängige Attributerstellung aktivieren.

Beispiele

Im folgenden Codebeispiel ist dargestellt, wie eine Attributtabelle mithilfe der AttributeCallbackBuilder-Klasse erstellt und aufgefüllt wird.

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

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.Windows.Design.Metadata-Namespace

AttributeTableBuilder

AddCallback

AttributeTable

Weitere Ressourcen

Exemplarische Vorgehensweise: Erstellen eines Entwurfszeitadorners