チュートリアル: カスタムのデザイン時メタデータの提供
WPF Designer for Visual Studio を使用すると、カスタムのデザイン時メタデータをさまざまなデザイナーに提供できます。 たとえば、Visual Studio および Expression Blend のカスタム コントロールに対して、異なるデザイン環境を対象にすることができます。 デザイナーにカスタムのデザイン時メタデータを登録するには、IProvideAttributeTable インターフェイスを実装し、AddCustomAttributes のいずれかのメソッドを呼び出します。
このチュートリアルでは、WPF または Silverlight のカスタム コントロール ライブラリにカスタムのデザイン時実装を提供する方法について説明します。 このチュートリアルでは次のタスクを行います。
WPF カスタム コントロール ライブラリ プロジェクトを作成する。
デザイン時メタデータに対する個別のアセンブリを作成する。
タスクを終了すると、WPF または Silverlight のカスタム コントロールにカスタムのデザイン時メタデータを提供する方法を理解できるようになります。
注意
実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
- Visual Studio 2010.
カスタム コントロールの作成
最初に、WPF カスタム コントロールのプロジェクトを作成します。
カスタム コントロールを作成するには
Visual Basic または Visual C# で TailspinToysControlLibrary という名前の新しい WPF カスタム コントロール ライブラリ プロジェクトを作成します。
コード エディターで CustomControl1 のコードが開きます。
注意
カスタムのデザイン環境の対象を Expression Blend 4 および Visual Studio 2010 のみにする必要がある場合には、プロジェクトのターゲット フレームワークを .NET Framework 4 に設定します。 カスタムのデザイン環境の対象を Expression Blend 3、Expression Blend 4、および Visual Studio 2010 にする必要がある場合には、プロジェクトのターゲット フレームワークを .NET Framework 3.5 に設定します。
ソリューション エクスプローラーで、コード ファイル名を TailspinToysControl.cs または TailspinToysControl.vb に変更します。 このプロジェクト内のすべての参照について名前を変更するかどうかをたずねるメッセージ ボックスが開いたら、[はい] をクリックします。
プロジェクトのプロパティを開き、[ビルド] (Visual Basic の場合は [コンパイル]) タブを選択します。
プロジェクトの出力パスを "bin\" に設定します。
ソリューションをビルドします。
デザイン時メタデータ アセンブリの作成
デザイン時コードは、特殊なメタデータ アセンブリで配布されます。 このチュートリアルでは、カスタム メタデータは Visual Studio および Expression Blend によってサポートされ、TailspinToysControlLibrary.Design という名前のアセンブリに配置されます。 アセンブリの名前付けの詳細については、「カスタム コントロールとデザイン時アセンブリの配置」を参照してください。
デザイン時メタデータ アセンブリを作成するには
Visual Basic または Visual C# の TailspinToysControlLibrary.Design という名前の新しいクラス ライブラリ プロジェクトをソリューションに追加します。
プロジェクトの出力パスを ".. \TailspinToysControlLibrary\bin\" に設定します。 これにより、コントロールのアセンブリとメタデータのアセンブリが同じフォルダー内に配置されるため、デザイナーがメタデータを検出できます。
次の WPF アセンブリおよび XAML アセンブリへの参照を追加します。
PresentationCore
PresentationFramework
System.Xaml
WindowsBase
次の WPF デザイナー アセンブリへの参照を追加します。
Microsoft.Windows.Design.Extensibility
Microsoft.Windows.Design.Interaction
注意
Expression Blend をインストールしている場合、[参照の追加] ダイアログ ボックスに 2 つのセットのWPF デザイナー アセンブリが表示されることがあります。 Visual Studio でインストールされる 2 つのアセンブリを選択します。これらのアセンブリは $(VSInstallDir)\Common7\IDE\PublicAssemblies フォルダーにあります。
注意
WPF デザイナー アセンブリが [参照の追加] ダイアログ ボックスに表示されない場合は、 [参照] タブをクリックし、$(VSInstallDir)\Common7\IDE\PublicAssemblies フォルダー内でそのアセンブリを探します。
TailspinToysControlLibrary プロジェクトへの参照を追加します。
ソリューション エクスプローラーで、Class1 コード ファイル名を RegisterMetadata.cs または RegisterMetadata.vb に変更します。
自動的に生成されたコードを次のコードで置き換えます。 このコードにより、カスタムのデザイン時属性を TailspinToysControl クラスに関連付ける AttributeTable が作成されます。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Windows.Design; using Microsoft.Windows.Design.Features; using Microsoft.Windows.Design.Metadata; using TailspinToysControlLibrary; // The ProvideMetadata assembly-level attribute indicates to designers // that this assembly contains a class that provides an attribute table. [assembly: ProvideMetadata(typeof(TailspinToysControlLibrary.Design.RegisterMetadata))] namespace TailspinToysControlLibrary.Design { internal class RegisterMetadata : IProvideAttributeTable { // Called by the designer to register any design-time metadata. public AttributeTable AttributeTable { get { AttributeTableBuilder builder = new AttributeTableBuilder(); // Set ToolboxBrowsableAttribute to true to display your custom control // in the Toolbox and in the Choose Items... dialog box. builder.AddCustomAttributes(typeof(TailspinToysControl), new ToolboxBrowsableAttribute(true)); return builder.CreateTable(); } } } }
ソリューションをビルドします。
次の手順
このチュートリアルでは、Visual Studio および Expression Blend で動作するカスタム デザイナー環境の基本実装が含まれるソリューションについて説明します。 次のチュートリアルを実行することで、このソリューションを展開できます。
コントロール アセンブリおよびデザイン時アセンブリを登録するには、AssemblyFoldersEx 登録プロシージャを使用します。 詳細については、「カスタム コントロールとデザイン時アセンブリの配置」を参照してください。
WPF Designer Extensibility Samples (WPF デザイナー機能拡張のサンプル) サイトから、カスタム デザイン時実装のサンプルをダウンロードできます。
参照
処理手順
チュートリアル : コントロール用のカスタム ツールボックス アイコンの作成
参照
[ツールボックス アイテムの選択] ダイアログ ボックスの [WPF コンポーネント] タブ