Partager via


Utilisation de la portée d'édition

L’exemple UsingEditingScope montre comment traiter un ensemble de modifications afin qu’elles puissent être annulées dans une unité atomique unique. Par défaut, les actions effectuées par un concepteur d’activités sont automatiquement intégrées au système Annuler/Rétablir.

Montre ce qui suit

Portée d'édition et annulation/rétablissement.

Discussions

Cet exemple montre comment traiter un ensemble de modifications apportées à l’arborescence ModelItem au sein d’une seule unité de travail. Notez que, lors de la liaison à des valeurs ModelItem directement à partir d'un concepteur WPF, les modifications sont appliquées automatiquement. Cet exemple montre ce qui doit être fait lorsque plusieurs modifications à traiter par lot sont effectuées via du code impératif, plutôt qu’une seule modification.

Dans cet exemple, trois activités sont ajoutées. Lorsque la modification commence, BeginEdit est appelée sur une instance de ModelItem. Les modifications apportées à l’arborescence ModelItem dans cette étendue d’édition sont traitées par lots. La BeginEdit commande retourne un EditingScope, qui peut être utilisé pour contrôler cette instance. OnComplete ou OnRevert peut être appelé pour valider ou rétablir la portée d'édition.

Vous pouvez également imbriquer des objets EditingScope, ce qui permet de suivre plusieurs ensembles de modifications dans le cadre d'une étendue d'édition plus large et de les contrôler individuellement. Un scénario qui peut utiliser cette fonctionnalité serait le cas où les modifications de plusieurs boîtes de dialogue doivent être validées ou rétablies séparément, avec toutes les modifications traitées comme une seule opération atomique. Dans cet exemple, les périmètres d'édition sont empilés en utilisant un ObservableCollection<T> de type ModelEditingScope. ObservableCollection<T> est utilisé afin que la profondeur de l'imbrication puisse être observée sur l'aire du concepteur.

Pour configurer, générer et exécuter l’exemple

  1. Générez et exécutez l’exemple, puis utilisez les boutons sur la gauche pour modifier le flux de travail.

  2. Cliquez sur Ouvrir la zone d'édition.

    1. Cette commande appelle BeginEdit qui crée une portée d'édition et le place sur la pile d'édition.

    2. Trois activités sont ensuite ajoutées à l’élément sélectionné ModelItem. Notez que si l’étendue de modification n’avait pas été ouverte avec BeginEdit, trois nouvelles activités s’affichent sur le canevas du concepteur. Étant donné que cette opération est toujours en attente dans EditingScope, le concepteur n'est pas encore mis à jour.

  3. Appuyez sur Fermer l’étendue d’édition pour valider l’étendue d’édition. Trois activités apparaissent dans le concepteur.