AttributeCallback (Delegado)
Se llama cuando se necesitan atributos para un tipo.
Espacio de nombres: Microsoft.Windows.Design.Metadata
Ensamblado: Microsoft.Windows.Design.Extensibility (en Microsoft.Windows.Design.Extensibility.dll)
Sintaxis
'Declaración
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 no admite delegados.
Parámetros
- builder
Tipo: Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder
Instancia de AttributeCallbackBuilder que se puede usar para agregar atributos.Los delegados AttributeCallbackBuilder solo pueden compilar atributos para el tipo que solicita los metadatos.
Comentarios
Utilice el delegado AttributeCallback cuando esté rellenando una tabla de atributos grande. Si usa el modelo de devolución de llamada, el relleno de la tabla de atributos se aplaza hasta que el diseñador necesite los metadatos en tiempo de diseño para un tipo.
Ejemplos
En el siguiente ejemplo de código se muestra cómo crear y rellenar una tabla de atributos mediante la clase 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();
}
}
}
}
Vea también
Referencia
Microsoft.Windows.Design.Metadata (Espacio de nombres)