逐步解說:提供工具箱圖示的中繼資料
本逐步解說示範如何在 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 程式碼檔。
以下列程式碼取代自動產生的程式碼。 這個程式碼會建立 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(); } } } }
儲存方案。
建立設計階段工具箱圖示
現在您已擁有設計階段組件,可以建立自訂工具箱圖示,並將這些圖示加入至專案,做為內嵌資源。 您會建立兩個圖示,一個用於 Visual Studio,另一個則用於 Expression Blend。
若要建立 Visual Studio 的設計階段工具箱圖示
將新的點陣圖檔案加入到 TailspinToysControlLibrary.Design 專案。 請將點陣圖檔案命名為 TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp。
在 [屬性] 視窗中,將點陣圖的 [色彩] 屬性設定為 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.Expression.4bit.48x48.bmp 點陣圖檔案。
建置方案。
測試工具箱圖示
請將 TailspinToysControl 加入至工具箱,以測試您的自訂工具箱圖示。
若要測試工具箱圖示
在 Visual Basic 或 Visual C# 中,將名為 TestApplication 的新 WPF 應用程式專案加入至方案。
MainWindow.xaml 隨即在 WPF 設計工具中開啟。 在工具箱中,TailspinToysControl 會出現在 [TailspinToysControlLibrary 控制項] 索引標籤中。 預設控制項圖示也會出現。
注意事項 內嵌在控制項執行階段組件的圖示並不會顯示。 這是工具箱自動填入功能的限制。
在 [工具箱] 中,以滑鼠右鍵按一下 [TailspinToysControl],並從捷徑功能表中選取 [刪除],然後按一下 [確定]。
[TailspinToysControl] 隨即從工具箱移除。
在 [工具箱] 中,以滑鼠右鍵按一下 [TailspinToysControlLibrary 控制項] 索引標籤,然後從捷徑功能表中選取 [選擇項目]。
[選擇工具箱項目] 對話方塊隨即開啟。
按一下 [WPF 元件] 索引標籤。 如需詳細資訊,請參閱 選擇工具箱項目對話方塊、WPF 元件索引標籤。
按一下 [瀏覽],並巡覽至 TailspinToysControlLibrary\TailspinToysControlLibrary\bin 資料夾。
按兩下以選取 [TailspinToysControlLibrary.dll]。
TailspinToysControlLibrary 組件的詳細資料隨即出現在 [選擇工具箱項目] 對話方塊中。 您的自訂設計階段圖示則會出現在 [TailspinToysControl] 群組方塊中。
按一下 [確定]。
[TailspinToysControl] 會連同 TailspinToysControlLibrary.TailspinToysControl.VisualStudio.24bit.48x48.bmp 圖示出現在工具箱中,而且該圖示會覆寫執行階段組件中的圖示。
後續步驟
您也可以在 Expression Blend 中載入自訂控制項和設計階段組件。 從 Expression Blend 4 開始,當您將專案參考加入至 TailspinToysControlLibrary.dll 組件時,TailspinToysControlLibrary.TailspinToysControl.Expression.4bit.48x48.png 圖示會顯示在 [資產] 視窗中。
您可以使用 AssemblyFoldersEx 註冊程序來部署執行階段和設計階段組件。 如需詳細資訊,請參閱部署自訂控制項和設計階段屬性。