Delegado AttributeCallback
Chamado quando atributos são necessários para um tipo.
Namespace: Microsoft.Windows.Design.Metadata
Assembly: Microsoft.Windows.Design (em Microsoft.Windows.Design.dll)
Sintaxe
Public Delegate Sub AttributeCallback ( _
builder As AttributeCallbackBuilder _
)
Dim instance As New AttributeCallback(AddressOf HandlerMethod)
public delegate void AttributeCallback(
AttributeCallbackBuilder builder
)
public delegate void AttributeCallback(
AttributeCallbackBuilder^ builder
)
O JScript não oferece suporte a delegados.
Parâmetros
- builder
Tipo: Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder
An AttributeCallbackBuilder que pode ser usado para adicionar atributos. AttributeCallbackBuilder delegados podem criar atributos somente para o tipo que está solicitando metadados.
Comentários
Use o AttributeCallback delegado ao preencher uma tabela grande do atributo. Usando o padrão de retorno de chamada, atributo tabela população é adiada até que o designer deve os metadados de time de design para um tipo.
Exemplos
O exemplo de código a seguir mostra como criar e popular uma tabela de atributo usando o AttributeCallbackBuilder classe.
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;
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 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());
}
}
}
Consulte também
Referência
Namespace Microsoft.Windows.Design.Metadata
Outros recursos
Demonstra Passo a passo: Criando um Adorner de tempo de design