共用方式為


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

WPF Designer for Visual Studio 可讓您為不同的設計工具提供自訂設計階段中繼資料。 例如,您可以在 Visual Studio 和 Expression Blend 中,針對自訂控制項建立不同的設計經驗。 若要向設計工具註冊自訂設計階段中繼資料,請實作 IProvideAttributeTable 介面,並呼叫其中一個 AddCustomAttributes 方法。

本逐步解說示範如何為 WPF 或 Silverlight 自訂控制項程式庫提供自訂設計階段實作。 在這個逐步解說中,您會執行下列工作:

  • 建立 WPF 自訂控制項程式庫專案。

  • 為設計階段中繼資料建立個別組件。

完成這些工作之後,您就會了解如何為 WPF 或 Silverlight 自訂控制項提供自訂設計階段中繼資料。

注意事項注意事項

根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。 若要變更設定,請從 [工具] 功能表中選取 [匯入和匯出設定]。 如需詳細資訊,請參閱 使用設定

必要條件

您需要下列元件才能完成此逐步解說:

  • Visual Studio 2010。

建立自訂控制項

第一個步驟是為 WPF 自訂控制項建立專案。

建立自訂控制項

  1. 在 Visual Basic 或 Visual C# 中建立名為 TailspinToysControlLibrary 的新 WPF 自訂控制項程式庫專案。

    CustomControl1 的程式碼隨即在 [程式碼編輯器] 中開啟。

    注意事項注意事項

    如果您的自訂設計經驗只需要以 Expression Blend 4 和 Visual Studio 2010 做為目標,請將專案的目標 Framework 設定為 .NET Framework 4。 如果您的自訂設計經驗需要以 Expression Blend 3、Expression Blend 4 和 Visual Studio 2010 做為目標,請將專案的目標 Framework 設定為 .NET Framework 3.5。

  2. 在 [方案總管] 中,將程式碼檔案的名稱變更為 TailspinToysControl.cs 或 TailspinToysControl.vb。 如果顯示訊息方塊詢問您是否要重新命名專案中的所有參考,請按一下 []。

  3. 開啟專案屬性並選取 [建置] (Visual Basic 的 [編譯]) 索引標籤。

  4. 將專案的輸出路徑設定為 "bin\"。

  5. 建置方案。

建立設計階段中繼資料組件

設計階段程式碼部署在特殊中繼資料組件中。 在這個逐步解說中,自訂中繼資料由 Visual Studio 和 Expression Blend 支援,並且部署在名為 TailspinToysControlLibrary.Design 的組件中。 如需命名組件的詳細資訊,請參閱部署自訂控制項和設計階段屬性

若要建立設計階段中繼資料組件

  1. 在 Visual Basic 或 Visual C# 中,將名為 TailspinToysControlLibrary.Design 的新類別庫專案加入至方案。

  2. 將專案的輸出路徑設定為 ".. \TailspinToysControlLibrary\bin\"。 這麼做會將控制項的組件和中繼資料組件保留在同一個資料夾中,讓設計工具可進行中繼資料探索。

  3. 加入下列 WPF 和 XAML 組件的參考。

    • PresentationCore

    • PresentationFramework

    • System.Xaml

    • WindowsBase

  4. 加入下列 WPF 設計工具組件的參考。 

    • Microsoft.Windows.Design.Extensibility

    • Microsoft.Windows.Design.Interaction

    注意事項注意事項

    如果您安裝了 Expression Blend,可能會在 [加入參考] 對話方塊中看到兩組 WPF 設計工具組件。 請選取與 Visual Studio 一起安裝的兩個組件;這兩個組件位於 $(VSInstallDir)\Common7\IDE\PublicAssemblies 資料夾中。

    注意事項注意事項

    如果 WPF 設計工具組件沒有出現在 [加入參考] 對話方塊中, 請按一下 [瀏覽] 索引標籤,然後巡覽至 $(VSInstallDir)\Common7\IDE\PublicAssemblies 資料夾中的組件。

  5. 加入 TailspinToysControlLibrary 專案的參考。

  6. 在 [方案總管] 中,將 Class1 程式碼檔案的名稱變更為 RegisterMetadata.cs 或 RegisterMetadata.vb。

  7. 以下列程式碼取代自動產生的程式碼。 這個程式碼會建立 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();
                }
            }
        }
    }
    
  8. 建置方案。

後續步驟

請參閱

工作

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

參考

AttributeTable

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

其他資源

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

工具箱圖示

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

提供設計階段中繼資料