Usar el ámbito de edición
En el ejemplo de UsingEditingScope, se muestra cómo procesar un conjunto de cambios por lotes para que se puedan deshacer en una unidad atómica única. De forma predeterminada, las acciones realizadas por un autor del diseñador de actividades se integran automáticamente en el sistema Deshacer/rehacer.
Muestra
Editar el ámbito y Deshacer/Rehacer.
Debate
En este ejemplo se muestra cómo procesar por lotes un conjunto de cambios en el árbol de ModelItem dentro de una unidad única de trabajo. Tenga en cuenta que al enlazar directamente con los valores ModelItem desde un diseñador de WPF, los cambios se aplican automáticamente. En este ejemplo se muestra lo que se debe hacer cuando se realizan mediante código imperativo varias modificaciones que se van a procesar por lotes, en lugar de un único cambio.
En este ejemplo, se agregan tres actividades. Cuando comienza la edición, se llama a BeginEdit en una instancia de ModelItem. Los cambios realizados en el árbol de ModelItem dentro de este ámbito de edición se procesan por lotes. El comando BeginEdit devuelve una clase EditingScope, que se puede utilizar para controlar esta instancia. Se puede llamar a los métodos OnComplete o OnRevert para confirmar o revertir el ámbito de edición.
También puede anidar objetos EditingScope, lo que permite realizar el seguimiento de varios conjuntos de cambios como parte de un ámbito de edición mayor y se pueden controlar individualmente. Por ejemplo, esta característica se podría utiliza cuando se deben confirmar o revertir por separado cambios de varios cuadros de diálogo y todos los cambios se tratan como una única operación atómica. En este ejemplo, los ámbitos de edición se apilan mediante una clase ObservableCollection<T> de tipo ModelEditingScope. Se utiliza ObservableCollection<T> para que la profundidad del anidamiento se pueda observar en la superficie del diseñador.
Configurar, compilar y ejecutar el ejemplo
Compile y ejecute el ejemplo y, a continuación, utilice los botones de la izquierda para modificar el flujo de trabajo.
Haga clic en Abrir ámbito de edición.
Este comando llama al método BeginEdit, que crea un ámbito de edición y lo inserta en la pila de edición.
A continuación, se agregan tres actividades a la clase ModelItem seleccionada. Tenga en cuenta que si el ámbito de edición no se hubiera abierto con BeginEdit, las tres actividades aparecerían en el lienzo del diseñador. Dado que esta operación todavía está pendiente dentro de la clase EditingScope, el diseñador todavía no se actualiza.
Presione Cerrar ámbito de edición para confirmar el ámbito de edición. Las tres actividades aparecen en el diseñador.