首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

WF 框架設計器篇(二):ActivityDesigner 架構與屬性網格整合

     編輯:關於C語言

WF 設計器架構核心觀念

每個 Activity 對應一個 ActivityDesigner,駐留環境 (Designer Surface) 可替換 (WinForms/WebForms)。

WF 設計器結構圖

ActivityDesigner 類別體系

  • 基礎宣告:[Designer(typeof(ActivityDesigner), typeof(IDesigner))]
  • 根設計器:[Designer(typeof(ActivityDesigner), typeof(IRootDesigner))]
  • 自訂 Activity 通常繼承基礎 Activity,無需重寫 Designer
  • 預設設計器外觀:簡單矩形

複合活動設計器

設計器呈現方式
ParallelActivityDesigner子活動並行顯示
SequenceDesigner子活動循序顯示
自訂複合活動需自行實作 Designer (如優先級關係視覺化)

自訂 ActivityDesigner 實作四大步驟

1. PropertyGrid 擴充屬性 (IExtenderProvider)

  • 在 IExtenderListService 加入自訂 IExtenderProvider
  • [ProvideProperty("Priority")] 關聯 PropertyGrid
  • CanExtend 判斷是否套用 → 呼叫 GetPriority/SetPriority

2. 宣告使用自訂設計器


[Designer(typeof(PrioritizedInterleaveDesigner), typeof(IDesigner))]
public class PrioritizedInterleave : CompositeActivity { ... }

3. 存取子設計器集合

CompositeActivityDesigner.ContainedDesigners 取得所有子活動設計器。

4. 右鍵選單修改屬性 (IDesignerVerbProvider)

  1. 實作 IDesignerVerbProvider
  2. 初始化時註冊:IDesignerVerbProviderService.AddVerbProvider(this)
  3. 透過 ActivityDesignerVerb.Properties 取得 Activity → Get/Set 屬性
  4. 呼叫 PerformLayout() 套用變更

修改設計器圖形 (Glyphs)

  1. 複合活動覆寫 Glyphs 回傳 ActivityDesignerGlyphCollection
  2. Add(new DesignerGlyph()) 加入自訂裝飾
  3. 基礎活動同樣適用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved