Поделиться через


AttributeCallbackBuilder - класс

Класс, экземпляр которого передается делегатам обратного вызова для отложенного заполнения атрибутов типа.

Иерархия наследования

System.Object
  Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder

Пространство имен:  Microsoft.Windows.Design.Metadata
Сборка:  Microsoft.Windows.Design.Extensibility (в Microsoft.Windows.Design.Extensibility.dll)

Синтаксис

'Декларация
Public NotInheritable Class AttributeCallbackBuilder
public sealed class AttributeCallbackBuilder
public ref class AttributeCallbackBuilder sealed
[<Sealed>]
type AttributeCallbackBuilder =  class end
public final class AttributeCallbackBuilder

Тип AttributeCallbackBuilder предоставляет следующие члены.

Свойства

  Имя Описание
Открытое свойство CallbackType Возврат типа, для которого выполняется заданный обратный вызов.

В начало страницы

Методы

  Имя Описание
Открытый метод AddCustomAttributes(array<Attribute[]) Добавление содержимого заданных атрибутов к этому конструктору.
Открытый метод AddCustomAttributes(String, array<Attribute[]) Добавление атрибутов к члену с заданным именем.
Открытый метод Equals Определяет, равен ли заданный объект Object текущему объекту Object. (Унаследовано от Object.)
Защищенный метод Finalize Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как объект будет утилизирован в процессе сборки мусора. (Унаследовано от Object.)
Открытый метод GetHashCode Играет роль хэш-функции для определенного типа. (Унаследовано от Object.)
Открытый метод GetType Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
Защищенный метод MemberwiseClone Создает неполную копию текущего объекта Object. (Унаследовано от Object.)
Открытый метод ToString Возвращение строки, представляющей текущий объект. (Унаследовано от Object.)

В начало страницы

Заметки

Класс AttributeCallbackBuilder предназначен для заполнения класса AttributeTable по требованию. Это особенно важно при заполнении таблиц, содержащих большое число атрибутов. Для типа, содержащего небольшое число атрибутов, рекомендуется использовать сам класс AttributeTableBuilder.

При использовании формата делегата создание атрибутов не выполняется до тех пор, пока конструктором не будут запрошены метаданные для конечного типа. Класс AttributeTableBuilder осуществляет передачу сведений об обратном вызове классу AttributeTable и последующее их сохранение. Таким образом, эти делегаты обратного вызова вызываются только по требованию. После вызова результаты помещаются в кэш AttributeTable.

Чтобы разрешить создание атрибутов по требованию, используйте метод AddCallback.

Примеры

В следующем примере показано, как создать и заполнить таблицу атрибутов с использованием класса 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();
            }
        }
    }
}

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

Microsoft.Windows.Design.Metadata - пространство имен

AttributeTableBuilder

AddCallback

AttributeTable

Другие ресурсы

Пошаговое руководство. Создание графического элемента времени разработки