共用方式為


Visual Studio 2010 中的擴充性變更

WPF Designer for Visual Studio 提供先進的平台,為 WPF 和 Silverlight 控制項實作自訂設計經驗。 WPF 設計工具擴充性 API 在其開始發行以來已經大幅進化Visual Studio 2008。 下面幾節將說明為 WPF 設計工具擴充性Visual Studio 2010。

支援 Silverlight 和多個平台版本

在 Visual Studio 2008 中,只能以最新的 WPF 平台版本做為控制項設計階段的目標; 而在 Visual Studio 2010 中,這項支援已延伸跨多個平台,包括針對 WPF 3.5、WPF 4.0、Silverlight 3 與未來發行的平台版本提供的設計階段支援。 正因為這些平台都有相同的擴充性 API,讓控制項設計階段作者可以輕鬆地撰寫一種經驗,然後在每個平台的控制項執行階段共用此經驗。

支援 Expression Blend

您現在可以使用和 Visual Studio 一樣提供的相同擴充性介面,將控制項設計階段實作的目標設定為 Expression Blend。 您可以決定為兩個撰寫環境發行不同或共同的設計階段經驗。

註冊中繼資料

在擴充性 API 中最顯著的差異是,IRegisterMetadata 介面已經由 IProvideAttributeTable 介面取代。 這項變更搭配多平台支援,已在擴充性 API 中締造了重大變革。 這表示 Visual Studio 2008 現有的控制項設計階段實作無法在 Visual Studio 2010 中載入。

此外,在 Visual Studio 2010 中,您會使用 ProvideMetadataAttribute 屬性指出,設計階段組件會提供中繼資料給設計工具。

新的擴充點

新的擴充性 API 也支援新的設計階段經驗,包括下列各項:

  • 在 [屬性] 視窗中,支援從分類編輯器存取模型。 配合這項變更將通用屬性提升至分類清單頂端,可以讓控制項作者在 [屬性] 視窗中提供豐富的編輯經驗。

  • 新的 AdornerPanel 公用程式方法,可以更輕鬆地將裝飾項放置在相對於自訂控制項的位置。

  • 新的程式撰寫模型,可以讓不同的設計工具 (例如 Visual Studio 和 Expression Blend) 共用設計階段實作。

  • 新的程式撰寫模型,可以讓多個目標架構共用設計階段實作。

比較 Visual Studio 2008 和 Visual Studio 2010 中的擴充性

下表摘要說明在 Visual Studio 2008 和 Visual Studio 2010 中撰寫自訂設計階段體驗的差異。

Visual Studio 2008

Visual Studio 2010

若要註冊設計階段型別,請實作 IRegisterMetadata 介面並使用 MetadataStore 類別。

若要註冊設計階段型別,請實作 IProvideAttributeTable 介面並呼叫 CreateTable 方法。

您不需要加入組件層級屬性。

您必須將設計階段組件加上 ProvideMetadataAttribute 屬性標記。

若要將設計工具型別與圖形項目產生關聯,請使用 NewItemFactory 上的 GetImage 方法 (這可以傳回各種項目型別)。

若要將設計工具型別與圖示產生關聯,請使用 GetImageStream 方法以傳回點陣圖。 只支援點陣圖。

若要存取模型屬性,請使用相依性屬性,例如:

ModelProperty backgroundProperty = adornedControlModel.Properties[Control.BackgroundProperty];

若要存取模型屬性,請使用相依性屬性的名稱,例如:

ModelProperty backgroundProperty = adornedControlModel.Properties["Background"];

此外,您還可以定義 PropertyIdentifier,這是型別/字串的組合。 當只靠名稱進行查閱並不足夠時,可以將 PropertyIdentifier 與附加屬性搭配使用。

若要讓配置空間和轉譯空間有所區別,請使用 AdornerCoordinateSpaces 類別。

不會使用 AdornerCoordinateSpaces 類別。

若要指定裝飾項相對於內容的位置,請使用 AdornerPlacementCollection 類別。

若要指定裝飾項相對於內容的位置,請使用 SetAdornerHorizontalAlignmentSetAdornerVerticalAlignmentSetAdornerMargin 方法。 已保留 AdornerPlacementCollection 類別以達到回溯相容性。

請參閱

其他資源

WPF 設計工具擴充性