AttributeCallback-Delegat
Wird aufgerufen, wenn für einen Typ Attribute erforderlich sind.
Namespace: Microsoft.Windows.Design.Metadata
Assembly: Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)
Syntax
'Declaration
Public Delegate Sub AttributeCallback ( _
builder As AttributeCallbackBuilder _
)
public delegate void AttributeCallback(
AttributeCallbackBuilder builder
)
public delegate void AttributeCallback(
AttributeCallbackBuilder^ builder
)
type AttributeCallback =
delegate of
builder:AttributeCallbackBuilder -> unit
JScript unterstützt keine Delegaten.
Parameter
- builder
Typ: Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder
Ein AttributeCallbackBuilder, der verwendet werden kann, um Attribute hinzuzufügen.AttributeCallbackBuilder-Delegate können Attribute nur für den Typ erstellen, der Metadaten anfordert.
Hinweise
Verwenden Sie das AttributeCallback-Delegat, wenn Sie eine große Attributtabelle auffüllen. Mit dem Rückrufmuster wird das Auffüllen der Attributtabelle verzögert, bis vom Designer die Metadaten für einen Typ zur Entwurfszeit benötigt werden.
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();
}
}
}
}
Siehe auch
Referenz
Microsoft.Windows.Design.Metadata-Namespace
Weitere Ressourcen
Exemplarische Vorgehensweise: Erstellen eines Entwurfszeitadorners