Utilizzo dell'ambito di modifica
L'esempio UsingEditingScope illustra come raggruppare un set di modifiche in modo che possano essere annullate in un'unica unità atomica. Per impostazione predefinita, le azioni intraprese da un autore dell'ActivityDesigner vengono integrate automaticamente nel sistema di annullamento/ripristino.
Dimostra
Modifica di ambito e comandi Annulla e Ripeti.
Discussione
In questo esempio viene illustrato come riunire in batch un set di modifiche nell'albero ModelItem all'interno di una singola unità di lavoro. Notare che in caso di associazione ai valori di ModelItem direttamente da una finestra di progettazione WPF, le modifiche vengono applicate automaticamente. In questo esempio vengono illustrate le operazioni che è necessario eseguire quando, anziché una singola modifica, vengono apportate più modifiche da riunire in batch tramite codice imperativo.
In questo esempio vengono aggiunte tre attività. Quando inizia la modifica, viene chiamato BeginEdit su un'istanza di ModelItem. le modifiche apportate all'albero ModelItem all'interno di questo ambito di modifica vengono riunite in batch. Il comando BeginEdit restituisce un oggetto EditingScopeche può essere usato per controllare questa istanza. È possibile chiamare OnComplete o OnRevert per eseguire il commit o ripristinare l'ambito di modifica.
È inoltre possibile annidare oggetti EditingScope, in modo da consentire il rilevamento di più set di modifiche, come parte di un ambito di modifica più esteso, e il controllo individuale. Un scenario in cui può essere usata questa funzionalità si presenta, ad esempio, quando deve essere eseguito il commit di modifiche da più finestre di dialogo, o quando tali modifiche devono essere ripristinate separatamente, e tutte le modifiche vengono considerate come una singola operazione atomica. In questo esempio gli ambiti di modifica vengono organizzati in stack usando un oggetto ObservableCollection<T> di tipo ModelEditingScope. ObservableCollection<T> viene usato in modo da poter osservare la profondità dell'annidamento nell'area di progettazione.
Per impostare, compilare ed eseguire l'esempio
Compilare ed eseguire l'esempio, quindi usare i pulsanti a sinistra per modificare il flusso di lavoro.
Fare clic sull'opzioneApri ambito di modifica.
Questo comando consente di chiamare BeginEdit che crea un ambito di modifica e lo inserisce nello stack di modifica.
Vengono quindi aggiunte tre attività all'oggetto ModelItem selezionato. Notare che se l'ambito di modifica non è stato aperto con BeginEdit, le tre nuove attività vengono visualizzate nell'area di disegno della finestra di progettazione. Poiché questa operazione è ancora in sospeso all'interno di EditingScope, la finestra di progettazione non viene ancora aggiornata.
Fare clic sull'opzione Chiudi ambito di modifica per eseguirne il commit. Nella finestra di progettazione vengono visualizzate tre attività.