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