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[]) | 會將屬性 (Attribute) 加入至具有指定名稱的成員。 | |
Equals | 判斷指定的 Object 和目前的 Object 是否相等。 (繼承自 Object)。 | |
Finalize | 允許物件在記憶體回收進行回收之前,嘗試釋放資源並執行其他清除作業。 (繼承自 Object)。 | |
GetHashCode | 做為特定型別的雜湊函式。 (繼承自 Object)。 | |
GetType | 取得目前執行個體的 Type。 (繼承自 Object)。 | |
MemberwiseClone | 建立目前 Object 的淺層複本 (Shallow Copy)。 (繼承自 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();
}
}
}
}
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。
請參閱
參考
Microsoft.Windows.Design.Metadata 命名空間