チュートリアル: ツールボックス アイコンへのメタデータの提供

このチュートリアルでは、Windows Presentation Foundation (WPF) カスタム コントロール ライブラリで Visual Studio や Expression Blend などのさまざまなデザイナーにツールボックス アイコンを提供する方法について説明します。 カスタム コントロールをデザイナーのツールボックスに追加すると、該当するアイコンがコントロールの名前の横に表示されます。

WPF Designer for Visual Studio は、カスタム ツールボックス アイコンをさまざまなデザイナーに提供できるようにします。 たとえば、Visual Studio および Expression Blend のカスタム コントロールに対して、異なるアイコンを対象にすることができます。 デザイン時実装によって提供されるアイコンは、コントロールのランタイム アセンブリの既定のアイコンをオーバーライドします。

このチュートリアルでは次のタスクを行います。

  • 埋め込まれたアイコンのビットマップを含む WPF カスタム コントロール ライブラリ プロジェクトを作成する。

  • 既定のツールボックス アイコンをオーバーライドするデザイン時メタデータに対して個別のアセンブリを作成する。

  • デザイン時にコントロールのアイコンをテストする。

タスクを終了すると、デザイン時にカスタム コントロールの既定のランタイム アイコンを置換する方法を理解できるようになります。

注意

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。

必須コンポーネント

このチュートリアルを実行するには、次のコンポーネントが必要です。

  • Visual Studio 2010.

ツールボックス アイコンを含むカスタム コントロールの作成

コントロール用のカスタム ツールボックス アイコンを作成するには、コントロールのプロジェクトに埋め込みリソースとしてイメージを追加します。

ツールボックス アイコンを含むカスタム コントロールを作成するには

  1. Visual Basic または Visual C# で TailspinToysControlLibrary という名前の新しい WPF カスタム コントロール ライブラリ プロジェクトを作成します。

  2. CustomControl1 コード ファイルの名前を TailspinToysControl に変更します。

  3. 埋め込みリソースとして TailspinToysControl.icon.bmp という名前のツールボックス アイコンを追加します。 詳細については、「チュートリアル : コントロール用のカスタム ツールボックス アイコンの作成」を参照してください。

  4. [テキスト ツール] を使用して、ビットマップで DEFAULT を描画します。これは、テキストボックスでコントロール アセンブリの既定のアイコンが読み込まれることを示します。

  5. プロジェクトの出力パスを ".. \TailspinToysControlLibrary\bin\" に設定します。

  6. ソリューションをビルドします。

デザイン時メタデータ アセンブリの作成

デザイン時コードは、特殊なメタデータ アセンブリで配布されます。 このチュートリアルでは、カスタム メタデータは Visual Studio および Expression Blend によってサポートされ、TailspinToysControlLibrary.Design という名前のアセンブリに配置されます。

デザイン時メタデータ アセンブリを作成するには

  1. TailspinToysControlLibrary.Design という名前のデザイン時アセンブリを作成します。 詳細については、「チュートリアル: カスタムのデザイン時メタデータの提供」を参照してください。

  2. コード エディターで RegisterMetadata コード ファイルを開きます。

  3. 自動的に生成されたコードを次のコードで置き換えます。 このコードにより、カスタムのデザイン時属性を 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();
                }
            }
        }
    }
    
  4. ソリューションを保存します。

デザイン時ツールボックス アイコンの作成

デザイン時アセンブリを作成すると、カスタムのツールボックス アイコンを作成し、それらのアイコンを埋め込みリソースとしてプロジェクトに追加できます。 2 つのアイコンを作成します。1 つは Visual Studio 用、もう 1 つは Expression Blend 用です。

Visual Studio 用のツールボックス アイコンを作成するには

  1. 新しいビットマップ ファイルを TailspinToysControlLibrary.Design プロジェクトに追加します。 ビットマップ ファイルに TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp という名前を付けます。

  2. [プロパティ] ウィンドウで、ビットマップの Colors プロパティを [24 ビット] に設定します。

  3. [テキスト ツール] を使用して、ビットマップで METADATA を描画します。これは、アイコンがデザイナー メタデータから設定されることを示します。

  4. ソリューション エクスプローラーでビットマップ ファイルを選択します。

  5. [プロパティ] ウィンドウで、[ビルド アクション] プロパティを [埋め込まれたリソース] に設定します。

  6. 新しいビットマップ ファイルを TailspinToysControlLibrary.Design プロジェクトに追加します。 ビットマップ ファイルに TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.bmp という名前を付けます。

    注意

    Blend でアイコンとして読み込まれるのは .png ファイルだけであるため、外部の描画プログラムを使用して Blend アイコンを作成します。

  7. イメージ エディター内を右クリックし、ショートカット メニューの [外部エディターを開く] をクリックします。

    描画アプリケーションが開きます。

  8. [テキスト ツール] を使用して、ビットマップで BLEND を描画します。これは、アイコンが Expression Blend の [資産] ウィンドウで使用されることを示します。

  9. イメージを .png ファイル形式で保存します。

  10. ソリューション エクスプローラーで、TailspinToysControlLibrary.Design プロジェクトを右クリックし、ショートカット メニューの [追加] をポイントし、[既存の項目] をクリックします。

  11. [既存項目の追加] ダイアログ ボックスで、TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png を選択し、[追加] をクリックします。

  12. ソリューション エクスプローラーで、.png イメージ ファイルを選択します。

  13. [プロパティ] ウィンドウで、[ビルド アクション] プロパティを [埋め込まれたリソース] に設定します。

  14. 空の TailspinToysControlLibrary.TailspinToysControl.VisualStudio.4bit.48x48.bmp ビットマップ ファイルを削除します。

  15. ソリューションをビルドします。

ツールボックス アイコンのテスト

カスタム ツールボックス アイコンをテストするには、ツールボックスに TailspinToysControl を追加します。

ツールボックス アイコンをテストするには

  1. Visual Basic または Visual C# で TestApplication という名前の新しい WPF アプリケーション プロジェクトをソリューションに追加します。

    WPF デザイナーで MainWindow.xaml が開きます。 ツールボックスの [TailspinToysControlLibrary コントロール] タブに TailspinToysControl が表示されます。 既定のコントロール アイコンが表示されます。

    既定のツールボックス アイコン

    注意

    コントロールのランタイム アセンブリに埋め込まれているアイコンは表示されません。 これは、ツールボックスの自動設定機能の制限です。

  2. ツールボックスで、[TailspinToysControl] を右クリックし、ショートカット メニューの [削除] を選択し、[OK] をクリックします。

    ツールボックスから [TailspinToysControl] が削除されます。

  3. ツールボックスで、[TailspinToysControlLibrary コントロール] タブを右クリックし、ショートカット メニューの [アイテムの選択] を選択します。

    [ツールボックス アイテムの選択] ダイアログ ボックスが表示されます。

  4. [WPF コンポーネント] タブをクリックします。 詳細については、「[ツールボックス アイテムの選択] ダイアログ ボックスの [WPF コンポーネント] タブ」を参照してください。

  5. [参照] をクリックし、TailspinToysControlLibrary\TailspinToysControlLibrary\bin フォルダーに移動します。

  6. [TailspinToysControlLibrary.dll] をダブルクリックして選択します。

    [ツールボックス アイテムの選択] ダイアログ ボックスに、TailspinToysControlLibrary アセンブリの詳細が表示されます。 [TailspinToysControl] グループ ボックスにカスタムのデザイン時アイコンが表示されます。

    カスタム アイコンを使用した [ツールボックス アイテムの選択] ダイアログ ボックス

  7. [OK] をクリックします。

    ランタイム アセンブリのアイコンをオーバーライドする [TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp] アイコンを含むツールボックスに、[TailspinToysControl] が表示されます。

    カスタム ツールボックス アイコン

次の手順

  • Expression Blend では、カスタム コントロールおよびデザイン時アセンブリを読み込むこともできます。 Expression Blend 4 以降では、プロジェクト参照を TailspinToysControlLibrary.dll アセンブリに追加すると、[資産] ウィンドウに [TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png] アイコンが表示されます。

  • ランタイム アセンブリおよびデザイン時アセンブリを配置するには、AssemblyFoldersEx 登録プロシージャを使用します。 詳細については、「カスタム コントロールとデザイン時アセンブリの配置」を参照してください。

参照

処理手順

チュートリアル : コントロール用のカスタム ツールボックス アイコンの作成

参照

AttributeTable

[ツールボックス アイテムの選択] ダイアログ ボックスの [WPF コンポーネント] タブ

その他の技術情報

ツールボックス アイコン

チュートリアル: カスタムのデザイン時メタデータの提供

カスタム コントロールとデザイン時アセンブリの配置

デザイン時メタデータの提供