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 命名空間