Classe AttributeCallbackBuilder
Uma instância dessa classe é passada para delegados de retorno de chamada para ociosamente preencher os atributos de um tipo.
Hierarquia de herança
System.Object
Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder
Namespace: Microsoft.Windows.Design.Metadata
Assembly: Microsoft.Windows.Design.Extensibility (em Microsoft.Windows.Design.Extensibility.dll)
Sintaxe
'Declaração
Public NotInheritable Class AttributeCallbackBuilder
public sealed class AttributeCallbackBuilder
public ref class AttributeCallbackBuilder sealed
[<Sealed>]
type AttributeCallbackBuilder = class end
public final class AttributeCallbackBuilder
O tipo AttributeCallbackBuilder expõe os membros a seguir.
Propriedades
Nome | Descrição | |
---|---|---|
CallbackType | Obtém o tipo que esse retorno de chamada está sendo solicitado. |
Início
Métodos
Nome | Descrição | |
---|---|---|
AddCustomAttributes(array<Attribute[]) | Adiciona o conteúdo dos atributos especificados para esse construtor. | |
AddCustomAttributes(String, array<Attribute[]) | Adiciona atributos para o membro com o nome especificado. | |
Equals | Determina se o especificado Object é igual a atual Object. (Herdado de Object.) | |
Finalize | Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado pela coleta de lixo. (Herdado de Object.) | |
GetHashCode | Serves as a hash function for a particular type. (Herdado de Object.) | |
GetType | Obtém o Type da instância atual. (Herdado de Object.) | |
MemberwiseClone | Cria uma cópia superficial do atual Object. (Herdado de Object.) | |
ToString | Retorna um string que representa o objeto atual. (Herdado de Object.) |
Início
Comentários
Use o AttributeCallbackBuilder para preencher um AttributeTable em demanda. Isso é especialmente importante para as tabelas de atributos que mantêm muitos atributos. Se você estiver especificando somente alguns atributos para um tipo, use o AttributeTableBuilder por si só.
Usando o formato do delegado, sem atributos são construídos até que os metadados para o tipo de destino é solicitado pelo designer. O AttributeTableBuilder transfere essa informação de retorno de chamada para o AttributeTable e preserva o proprietário. Portanto, esses delegados de retorno de chamada só são invocados sob demanda. Uma vez chamado, seus resultados são armazenados em cache pelo AttributeTable.
Habilitar a criação de demanda de atributo usando o AddCallback método.
Exemplos
O exemplo de código a seguir mostra como criar e preencher 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;
// 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();
}
}
}
}
Acesso thread-safe
Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Consulte também
Referência
Namespace Microsoft.Windows.Design.Metadata