チュートリアル: ツールボックス アイコンへのメタデータの提供
このチュートリアルでは、Windows Presentation Foundation (WPF) カスタム コントロール ライブラリで Visual Studio や Expression Blend などのさまざまなデザイナーにツールボックス アイコンを提供する方法について説明します。 カスタム コントロールをデザイナーのツールボックスに追加すると、該当するアイコンがコントロールの名前の横に表示されます。
WPF Designer for Visual Studio は、カスタム ツールボックス アイコンをさまざまなデザイナーに提供できるようにします。 たとえば、Visual Studio および Expression Blend のカスタム コントロールに対して、異なるアイコンを対象にすることができます。 デザイン時実装によって提供されるアイコンは、コントロールのランタイム アセンブリの既定のアイコンをオーバーライドします。
このチュートリアルでは次のタスクを行います。
埋め込まれたアイコンのビットマップを含む WPF カスタム コントロール ライブラリ プロジェクトを作成する。
既定のツールボックス アイコンをオーバーライドするデザイン時メタデータに対して個別のアセンブリを作成する。
デザイン時にコントロールのアイコンをテストする。
タスクを終了すると、デザイン時にカスタム コントロールの既定のランタイム アイコンを置換する方法を理解できるようになります。
注意
実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
- Visual Studio 2010.
ツールボックス アイコンを含むカスタム コントロールの作成
コントロール用のカスタム ツールボックス アイコンを作成するには、コントロールのプロジェクトに埋め込みリソースとしてイメージを追加します。
ツールボックス アイコンを含むカスタム コントロールを作成するには
Visual Basic または Visual C# で TailspinToysControlLibrary という名前の新しい WPF カスタム コントロール ライブラリ プロジェクトを作成します。
CustomControl1 コード ファイルの名前を TailspinToysControl に変更します。
埋め込みリソースとして TailspinToysControl.icon.bmp という名前のツールボックス アイコンを追加します。 詳細については、「チュートリアル : コントロール用のカスタム ツールボックス アイコンの作成」を参照してください。
[テキスト ツール] を使用して、ビットマップで DEFAULT を描画します。これは、テキストボックスでコントロール アセンブリの既定のアイコンが読み込まれることを示します。
プロジェクトの出力パスを ".. \TailspinToysControlLibrary\bin\" に設定します。
ソリューションをビルドします。
デザイン時メタデータ アセンブリの作成
デザイン時コードは、特殊なメタデータ アセンブリで配布されます。 このチュートリアルでは、カスタム メタデータは Visual Studio および Expression Blend によってサポートされ、TailspinToysControlLibrary.Design という名前のアセンブリに配置されます。
デザイン時メタデータ アセンブリを作成するには
TailspinToysControlLibrary.Design という名前のデザイン時アセンブリを作成します。 詳細については、「チュートリアル: カスタムのデザイン時メタデータの提供」を参照してください。
コード エディターで RegisterMetadata コード ファイルを開きます。
自動的に生成されたコードを次のコードで置き換えます。 このコードにより、カスタムのデザイン時属性を 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(); } } } }
ソリューションを保存します。
デザイン時ツールボックス アイコンの作成
デザイン時アセンブリを作成すると、カスタムのツールボックス アイコンを作成し、それらのアイコンを埋め込みリソースとしてプロジェクトに追加できます。 2 つのアイコンを作成します。1 つは Visual Studio 用、もう 1 つは Expression Blend 用です。
Visual Studio 用のツールボックス アイコンを作成するには
新しいビットマップ ファイルを TailspinToysControlLibrary.Design プロジェクトに追加します。 ビットマップ ファイルに TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp という名前を付けます。
[プロパティ] ウィンドウで、ビットマップの Colors プロパティを [24 ビット] に設定します。
[テキスト ツール] を使用して、ビットマップで METADATA を描画します。これは、アイコンがデザイナー メタデータから設定されることを示します。
ソリューション エクスプローラーでビットマップ ファイルを選択します。
[プロパティ] ウィンドウで、[ビルド アクション] プロパティを [埋め込まれたリソース] に設定します。
新しいビットマップ ファイルを TailspinToysControlLibrary.Design プロジェクトに追加します。 ビットマップ ファイルに TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp という名前を付けます。
注意
Blend でアイコンとして読み込まれるのは .png ファイルだけであるため、外部の描画プログラムを使用して Blend アイコンを作成します。
イメージ エディター内を右クリックし、ショートカット メニューの [外部エディターを開く] をクリックします。
描画アプリケーションが開きます。
[テキスト ツール] を使用して、ビットマップで BLEND を描画します。これは、アイコンが Expression Blend の [資産] ウィンドウで使用されることを示します。
イメージを .png ファイル形式で保存します。
ソリューション エクスプローラーで、TailspinToysControlLibrary.Design プロジェクトを右クリックし、ショートカット メニューの [追加] をポイントし、[既存の項目] をクリックします。
[既存項目の追加] ダイアログ ボックスで、TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png を選択し、[追加] をクリックします。
ソリューション エクスプローラーで、.png イメージ ファイルを選択します。
[プロパティ] ウィンドウで、[ビルド アクション] プロパティを [埋め込まれたリソース] に設定します。
空の TailspinToysControlLibrary.TailspinToysControl.VisualStudio.4bit.48x48.bmp ビットマップ ファイルを削除します。
ソリューションをビルドします。
ツールボックス アイコンのテスト
カスタム ツールボックス アイコンをテストするには、ツールボックスに TailspinToysControl を追加します。
ツールボックス アイコンをテストするには
Visual Basic または Visual C# で TestApplication という名前の新しい WPF アプリケーション プロジェクトをソリューションに追加します。
WPF デザイナーで MainWindow.xaml が開きます。 ツールボックスの [TailspinToysControlLibrary コントロール] タブに TailspinToysControl が表示されます。 既定のコントロール アイコンが表示されます。
注意
コントロールのランタイム アセンブリに埋め込まれているアイコンは表示されません。 これは、ツールボックスの自動設定機能の制限です。
ツールボックスで、[TailspinToysControl] を右クリックし、ショートカット メニューの [削除] を選択し、[OK] をクリックします。
ツールボックスから [TailspinToysControl] が削除されます。
ツールボックスで、[TailspinToysControlLibrary コントロール] タブを右クリックし、ショートカット メニューの [アイテムの選択] を選択します。
[ツールボックス アイテムの選択] ダイアログ ボックスが表示されます。
[WPF コンポーネント] タブをクリックします。 詳細については、「[ツールボックス アイテムの選択] ダイアログ ボックスの [WPF コンポーネント] タブ」を参照してください。
[参照] をクリックし、TailspinToysControlLibrary\TailspinToysControlLibrary\bin フォルダーに移動します。
[TailspinToysControlLibrary.dll] をダブルクリックして選択します。
[ツールボックス アイテムの選択] ダイアログ ボックスに、TailspinToysControlLibrary アセンブリの詳細が表示されます。 [TailspinToysControl] グループ ボックスにカスタムのデザイン時アイコンが表示されます。
[OK] をクリックします。
ランタイム アセンブリのアイコンをオーバーライドする [TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp] アイコンを含むツールボックスに、[TailspinToysControl] が表示されます。
次の手順
Expression Blend では、カスタム コントロールおよびデザイン時アセンブリを読み込むこともできます。 Expression Blend 4 以降では、プロジェクト参照を TailspinToysControlLibrary.dll アセンブリに追加すると、[資産] ウィンドウに [TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png] アイコンが表示されます。
ランタイム アセンブリおよびデザイン時アセンブリを配置するには、AssemblyFoldersEx 登録プロシージャを使用します。 詳細については、「カスタム コントロールとデザイン時アセンブリの配置」を参照してください。
参照
処理手順
チュートリアル : コントロール用のカスタム ツールボックス アイコンの作成
参照
[ツールボックス アイテムの選択] ダイアログ ボックスの [WPF コンポーネント] タブ