建立、刪除或更新元素時,您可以撰寫程式碼,將變更傳播到模型的其他部分,或外部資源,例如檔案、資料庫或其他元件。
Reference
作為指導方針,請依下列順序考慮這些技術:
| 技巧 | Scenarios | 如需詳細資訊 |
|---|---|---|
| 定義計算領域屬性。 | 網域屬性,其值是根據模型中的其他屬性計算的。 例如,價格是相關元素價格的總和。 | 計算和自訂儲存屬性 |
| 定義自訂儲存體網域屬性。 | 儲存在模型其他部分或外部的網域屬性。 例如,您可以將運算式字串剖解析為模型中的樹狀結構。 | 計算和自訂儲存屬性 |
| 覆寫變更處理常式,例如 OnValueChanging 和 OnDeleting | 讓不同的元素保持同步,並讓外部值與模型保持同步。 將值限制在定義的範圍內。 會在屬性值和其他變更發生前後立即進行呼叫。 您可以拋出例外狀況來終止變更。 |
網域屬性值變更處理常式 |
| 規則 | 您可以定義在發生變更的交易結束之前排入佇列以等待執行的規則。 它們不會在復原或重做時執行。 使用它們使商店的一部分與另一部分保持同步。 | 規則會在模型內傳播變更 |
| 店家活動 | 建模存放區提供事件通知,例如新增或刪除元素或連結,或變更屬性的值。 此活動也會在復原和重做時執行。 使用存放區事件來更新存放區中不存在的值。 | 事件處理常式會在模型外部傳播變更 |
| .NET 事件 | 圖形具有回應滑鼠按一下和其他手勢的事件處理常式。 您必須為每個物件註冊這些事件。 註冊通常是在覆寫 `InitializeInstanceResources` 時完成,而且必須針對每個元素進行。 這些事件通常發生在交易之外。 |
如何攔截圖形或裝飾器的點擊 |
| 界限規則 | 界限規則專門用來約束形狀的界限。 | BoundsRules 限制圖形位置和大小 |
| 選擇規則 | 選取規則會特別限制使用者可以選取的內容。 | 如何:存取和限制目前的選取範圍 |
| OnAssocatedProperty已變更 | 使用形狀和連接器的特徵 (例如陰影、箭頭、顏色、線寬和樣式) 來指示模型元素的狀態。 | 更新圖形和連接器以反映模型 |
比較規則和儲存的事件
當模型發生變更時,會執行變更通知程式、規則和事件。
規則通常會在交易結束時套用,而事件則在交易的變更提交後套用。
使用存放區事件將模型與存放區外部的物件同步處理,並使用規則來維護存放區內的一致性。
建立自訂規則 您可以將自訂規則建立為抽象規則的衍生類別。 您也必須通知架構有關自訂規則的資訊。 如需詳細資訊,請參閱 規則在 模型內傳播變更。
訂閱事件 在訂閱事件之前,請先建立事件處理常式和委派。 然後使用屬性 EventManagerDirectory來訂閱事件。 如需詳細資訊,請參閱 事件處理常式在模型外部傳播變更。
復原變更 當您復原交易時,會觸發事件,但不會套用規則。 如果規則變更值,而您復原該變更,則在復原動作期間,該值會重設為原始值。 引發事件時,您必須手動將值變更回其原始值。 若要深入瞭解交易和復原,請參閱 如何:使用交易來更新模型。
將事件引數傳遞至規則和事件事件和規則都會傳遞一個
EventArgs參數,其中包含模型如何變更的相關資訊。
相關內容
- 如何攔截圖形或裝飾器的點擊
- 編寫程式碼以自訂 Domain-Specific 語言