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 | |
---|---|---|
CallbackType | Ruft den Typ ab, für den dieser Rückruf aufgerufen wird. |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
AddCustomAttributes(array<Attribute[]) | Fügt diesem Generator die Inhalte der angegebenen Attribute hinzu. | |
AddCustomAttributes(String, array<Attribute[]) | Fügt Attribute zu dem Member mit dem angegebenen Namen hinzu. | |
Equals | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) | |
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.) | |
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) | |
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) | |
MemberwiseClone | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) | |
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
Weitere Ressourcen
Exemplarische Vorgehensweise: Erstellen eines Entwurfszeitadorners