編輯內容架構
本主題說明在開 WPF Designer for Visual Studio 的功能提供者和功能連接器時,編輯內容所扮演的角色。 如需功能提供者和功能連接器的詳細資訊,請參閱功能提供者和功能連接器。
編輯內容:擷取設計工具的目前狀態
視覺化設計工具在使用時會累積相當可觀的狀態資訊。 狀態可代表任何類型的設計階段資訊,例如目前選取範圍中的物件或按一下滑鼠按鈕時的行為。 狀態必須儲存在集中的位置,如此您就可以在需要時擷取這些狀態。 EditingContext 類別代表設計工具的集中狀態儲存機制。
服務
服務是類別的單一執行個體,會定義描述完整的行為。 服務會在設計工具中提供行為和實作。 一旦在內容中建立服務,該服務就會一直存在,直到處置內容為止。 服務永遠不會從內容消失。 服務具有一致的執行個體值,所以一律可安全地進行快取。 如需示範如何實作服務的程式碼範例,請參閱 HOW TO:建立自訂功能連接器。
內容項目
內容項目是不可變的物件,其中包含狀態。 部分內容項目也會定義方法,可用來在其所包含的狀態上執行作業。
內容項目可加入到內容並從內容移除。 雖然是暫時性 (Transient),但是這些項目都具有值。 即使特定的內容項目不在內容中,它也具有預設值,絕不會傳回 null。
和服務不同,內容項目的值隨時都可能變更,因此不應快取內容項目。 您可以訂閱變更回呼 (Callback),這在內容項目的特定型別變更時會引發。
內容項目是不變的,但是新的內容項目可以取代現有的內容項目,以模擬可變動性。
訂閱
服務和內容項目都有管理員。 服務管理員和內容項目管理員基本上就是保存資料的資料表。 例如,您可以使用服務管理員來發行新服務。
服務管理員和內容項目管理員也提供訂閱機制,當有某項特定資料出現時,就會通知程式碼。 此通知會以回呼委派 (Delegate) 的方式實作。 訂閱就是在有特定服務或內容項目型別加入時呼叫的委派。
與 ComponentModel 設計工具架構的相似處
編輯內容的概念,與 System.ComponentModel.Design 命名空間 (Namespace) 中的 IDesignerHost 和 IServiceContainer 介面類似。 如需詳細資訊,請參閱比較 Windows Form 設計工具架構與 WPF 設計工具架構。
請參閱
參考
Microsoft.Windows.Design.Services