AttributeTableBuilder.AddCallback-Methode
Aktualisiert: November 2007
Fügt einen Rückruf hinzu, der aufgerufen wird, wenn Metadaten für den angegebenen Typ benötigt werden.
Namespace: Microsoft.Windows.Design.Metadata
Assembly: Microsoft.Windows.Design (in Microsoft.Windows.Design.dll)
Syntax
'Declaration
Public Sub AddCallback ( _
type As Type, _
callback As AttributeCallback _
)
'Usage
Dim instance As AttributeTableBuilder
Dim type As Type
Dim callback As AttributeCallback
instance.AddCallback(type, callback)
public void AddCallback(
Type type,
AttributeCallback callback
)
public:
void AddCallback(
Type^ type,
AttributeCallback^ callback
)
public function AddCallback(
type : Type,
callback : AttributeCallback
)
Parameter
type
Typ: System.TypeDer Typ, dem Metadatenattribute hinzugefügt werden sollen.
callback
Typ: Microsoft.Windows.Design.Metadata.AttributeCallbackEin AttributeCallback, der Type Metadaten hinzufügt.
Hinweise
Callback kann der Attributtabelle bei Bedarf Metadaten hinzufügen. Dies ist effektiver, als Metadaten bei der Erstellung der Tabelle hinzuzufügen.
Verwenden Sie die AddCallback-Methode mit der AttributeCallbackBuilder-Klasse, wenn Sie eine große Attributtabelle erstellen.
Beispiele
Im folgenden Codebeispiel ist dargestellt, wie eine Attributtabelle mithilfe der AddCallback-Methode und der AttributeTableBuilder-Klasse erstellt und aufgefüllt wird. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels, das für die AttributeCallbackBuilder-Klasse bereitgestellt wird.
// Container for any general design-time metadata to initialize.
// Designers look for a type in the design-time assembly that
// implements IRegisterMetadata. If found, designers instantiate
// this class and call its Register() method automatically.
internal class Metadata : IRegisterMetadata
{
// Called by the designer to register any design-time metadata.
public void Register()
{
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));
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(typeof(Button));
PropertyDescriptor pd = properties["Foreground"];
callbackBuilder.AddCustomAttributes(
pd,
new ReadOnlyAttribute(true));
callbackBuilder.AddCustomAttributes(
Button.WidthProperty,
new TypeConverterAttribute(typeof(LengthConverter)),
new DescriptionAttribute("This is the width"));
MemberInfo[] members = typeof(Button).GetMember("Height");
callbackBuilder.AddCustomAttributes(
members[0],
new ReadOnlyAttribute(true));
});
MetadataStore.AddAttributeTable(builder.CreateTable());
}
}
Berechtigungen
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.
Siehe auch
Referenz
Microsoft.Windows.Design.Metadata-Namespace