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 の作成が要求時に行われるようになります。 これは、多数の属性を保持する属性テーブルで特に重要です。 1 つの型に数個の属性しか指定しない場合は、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 (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。
参照
参照
Microsoft.Windows.Design.Metadata 名前空間