AttributeCallback 대리자
형식의 특성이 필요할 때 호출됩니다.
네임스페이스: Microsoft.Windows.Design.Metadata
어셈블리: Microsoft.Windows.Design.Extensibility(Microsoft.Windows.Design.Extensibility.dll)
구문
‘선언
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에서는 대리자를 지원하지 않습니다.
매개 변수
- builder
형식: Microsoft.Windows.Design.Metadata.AttributeCallbackBuilder
특성을 추가하는 데 사용할 수 있는 AttributeCallbackBuilder입니다.AttributeCallbackBuilder 위임은 메타데이터를 요청하는 형식에 대해서만 특성을 작성할 수 있습니다.
설명
대규모 특성 테이블을 채우는 경우 AttributeCallback 대리자를 사용합니다. 콜백 패턴을 사용하면 디자이너에서 형식의 디자인 타임 메타데이터가 필요할 때까지 특성 테이블 채우기가 지연됩니다.
예제
다음 코드 예제에서는 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();
}
}
}
}
참고 항목
참조
Microsoft.Windows.Design.Metadata 네임스페이스