Utilizzo dell'ambito di modificaUsing Editing Scope

In questo esempio viene illustrato come raggruppare un set di modifiche in modo che possano essere annullate in un'unica unità atomica.This sample demonstrates how to batch a set of changes so that they can be undone in a single atomic unit. Per impostazione predefinita, le azioni intraprese da un autore dell'ActivityDesigner vengono integrate automaticamente nel sistema di annullamento/ripristino.By default, the actions taken by an activity designer author are automatically integrated into the Undo/Redo system.

DimostrazioneDemonstrates

Modifica di ambito e comandi Annulla e Ripeti.Editing scope and Undo and Redo.

DiscussioneDiscussion

In questo esempio viene illustrato come riunire in batch un set di modifiche nell'albero ModelItem all'interno di una singola unità di lavoro.This sample demonstrates how to batch a set of changes to the ModelItem tree within a single unit of work. Notare che in caso di associazione ai valori di ModelItem direttamente da una finestra di progettazione WPF, le modifiche vengono applicate automaticamente.Note that when binding to ModelItem values directly from a WPF designer, changes are applied automatically. 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.This sample demonstrates what must be done when multiple changes to be batched are being made through imperative code, rather than a single change.

In questo esempio vengono aggiunte tre attività.In this sample, three activities are added. Quando inizia la modifica, viene chiamato BeginEdit su un'istanza di ModelItem.When editing begins, BeginEdit is called on an instance of ModelItem. le modifiche apportate all'albero ModelItem all'interno di questo ambito di modifica vengono riunite in batch.Changes made to the ModelItem tree within this editing scope are batched. Il comando BeginEdit restituisce un oggetto EditingScopeche può essere usato per controllare questa istanza.The BeginEdit command returns an EditingScope, which can be used to control this instance. È possibile chiamare OnComplete o OnRevert per eseguire il commit o ripristinare l'ambito di modifica.Either OnComplete or OnRevert can be called to either commit or revert the editing scope.

È 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.You can also nest EditingScope objects, which allows for multiple sets of changes to be tracked as part of a larger editing scope and can be controlled individually. 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.A scenario that may use this feature would be when changes from multiple dialogs must be committed or reverted separately, with all changes being treated as a single atomic operation. In questo esempio gli ambiti di modifica vengono organizzati in stack usando un oggetto ObservableCollection<T> di tipo ModelEditingScope.In this sample, the editing scopes are stacked using an ObservableCollection<T> of type ModelEditingScope. ObservableCollection<T> viene usato in modo da poter osservare la profondità dell'annidamento nell'area di progettazione.The ObservableCollection<T> is used so that the depth of the nesting can be observed on the designer surface.

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. Compilare ed eseguire l'esempio, quindi usare i pulsanti a sinistra per modificare il flusso di lavoro.Build and run the sample, and then use the buttons on the left to modify the workflow.

  2. Fare clic su aprire l'ambito di modifica.Click Open Editing Scope.

    1. Questo comando consente di chiamare BeginEdit che crea un ambito di modifica e lo inserisce nello stack di modifica.This command calls BeginEdit that creates an editing scope and pushes it onto the editing stack.

    2. Vengono quindi aggiunte tre attività all'oggetto ModelItem selezionato.Three activities are then added to the selected ModelItem. 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.Note that if the editing scope had not been opened with BeginEdit, three new activities would appear on the designer canvas. Poiché questa operazione è ancora in sospeso all'interno di EditingScope, la finestra di progettazione non viene ancora aggiornata.Because this operation is still pending within the EditingScope, the designer is not yet updated.

  3. Premere chiusura dell'ambito di modifica per eseguire il commit dell'ambito di modifica.Press Close Editing Scope to commit the editing scope. Nella finestra di progettazione vengono visualizzate tre attività.Three activities appear in the designer.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Basic\CustomActivities\CustomActivityDesigners\UsingEditingScope