次の方法で共有


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

AttributeTableBuilder

AddCallback

AttributeTable

その他の技術情報

チュートリアル : デザイン時装飾の作成