共用方式為


逐步解說:提供工具箱圖示的中繼資料

本逐步解說示範如何在 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. 以下列程式碼取代自動產生的程式碼。 這個程式碼會建立 AttributeTable,用來將自訂設計階段屬性附加至 TailspinToysControl 類別。

    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. 儲存方案。

建立設計階段工具箱圖示

現在您已擁有設計階段組件,可以建立自訂工具箱圖示,並將這些圖示加入至專案,做為內嵌資源。 您會建立兩個圖示,一個用於 Visual Studio,另一個則用於 Expression Blend。

若要建立 Visual Studio 的設計階段工具箱圖示

  1. 將新的點陣圖檔案加入到 TailspinToysControlLibrary.Design 專案。 請將點陣圖檔案命名為 TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp。

  2. 在 [屬性] 視窗中,將點陣圖的 [色彩] 屬性設定為 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.Expression.4bit.48x48.bmp 點陣圖檔案。

  15. 建置方案。

測試工具箱圖示

請將 TailspinToysControl 加入至工具箱,以測試您的自訂工具箱圖示。

若要測試工具箱圖示

  1. 在 Visual Basic 或 Visual C# 中,將名為 TestApplication 的新 WPF 應用程式專案加入至方案。

    MainWindow.xaml 隨即在 WPF 設計工具中開啟。 在工具箱中,TailspinToysControl 會出現在 [TailspinToysControlLibrary 控制項] 索引標籤中。 預設控制項圖示也會出現。

    預設工具箱圖示

    注意事項注意事項

    內嵌在控制項執行階段組件的圖示並不會顯示。 這是工具箱自動填入功能的限制。

  2. 在 [工具箱] 中,以滑鼠右鍵按一下 [TailspinToysControl],並從捷徑功能表中選取 [刪除],然後按一下 [確定]。

    [TailspinToysControl] 隨即從工具箱移除。

  3. 在 [工具箱] 中,以滑鼠右鍵按一下 [TailspinToysControlLibrary 控制項] 索引標籤,然後從捷徑功能表中選取 [選擇項目]。

    [選擇工具箱項目] 對話方塊隨即開啟。

  4. 按一下 [WPF 元件] 索引標籤。 如需詳細資訊,請參閱 選擇工具箱項目對話方塊、WPF 元件索引標籤

  5. 按一下 [瀏覽],並巡覽至 TailspinToysControlLibrary\TailspinToysControlLibrary\bin 資料夾。

  6. 按兩下以選取 [TailspinToysControlLibrary.dll]。

    TailspinToysControlLibrary 組件的詳細資料隨即出現在 [選擇工具箱項目] 對話方塊中。 您的自訂設計階段圖示則會出現在 [TailspinToysControl] 群組方塊中。

    包含自訂圖示的 [選擇工具箱項目] 對話方塊

  7. 按一下 [確定]。

    [TailspinToysControl] 會連同 TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp 圖示出現在工具箱中,而且該圖示會覆寫執行階段組件中的圖示。

    自訂工具箱圖示

後續步驟

  • 您也可以在 Expression Blend 中載入自訂控制項和設計階段組件。 從 Expression Blend 4 開始,當您將專案參考加入至 TailspinToysControlLibrary.dll 組件時,TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png 圖示會顯示在 [資產] 視窗中。

  • 您可以使用 AssemblyFoldersEx 註冊程序來部署執行階段和設計階段組件。 如需詳細資訊,請參閱部署自訂控制項和設計階段屬性

請參閱

工作

逐步解說:建立控制項的自訂工具箱圖示

參考

AttributeTable

選擇工具箱項目對話方塊、WPF 元件索引標籤

其他資源

工具箱圖示

逐步解說:提供自訂設計階段中繼資料

部署自訂控制項和設計階段屬性

提供設計階段中繼資料