UsingEditingScope 範例示範如何將一組變更批次處理,以便在一個單一原子單位中復原這些變更。 根據預設,活動設計工具作者所採取的動作會自動整合到復原/重做系統中。
演示
編輯範圍、復原和取消復原。
討論
此範例示範如何在單一工作單位中批次處理ModelItem樹形結構的一組變更。 請注意,從 WPF 設計工具直接系結至 ModelItem 值時,會自動套用變更。 此範例示範透過命令式程式代碼進行多個變更,而不是單一變更時,必須執行哪些動作。
在此範例中,會新增三個活動。 編輯開始時,會在 BeginEdit 的實體上呼叫 ModelItem。 在此編輯範圍內對樹狀結構所做的 ModelItem 變更會批處理。 命令 BeginEdit 會傳 EditingScope回 ,可用來控制這個實例。 可以呼叫OnComplete或OnRevert來提交或恢復編輯範圍。
您也可以將EditingScope 物件嵌套,這樣就能在較大編輯範圍內追蹤多個變更集,並且可以個別控制。 使用這項功能的情境是必須將多個對話框的變更分別提交或還原時,而所有變更都被視為單一原子操作。 在此範例中,編輯範圍是使用 ObservableCollection<T> 類型的 ModelEditingScope堆疊。 ObservableCollection<T> 被使用是為了讓設計工具介面可觀察到巢狀深度。
要設定、建置和執行範例,請執行以下步驟:
建置並執行範例,然後使用左側的按鈕來修改工作流程。
按兩下 [開啟編輯範圍]。
此命令會呼叫 BeginEdit 以建立編輯範圍,並將它推送至編輯堆棧。
接著將三個活動新增至選取的ModelItem。 請注意,如果編輯範圍尚未使用 BeginEdit開啟,設計工具畫布上會出現三個新的活動。 由於這項作業仍在EditingScope中擱置,因此設計師尚未更新。
按 關閉編輯範圍 以確定編輯範圍。 設計介面中會出現三個活動。