Compartir a través de


Usar el ámbito de edición

En el ejemplo UsingEditingScope se muestra cómo procesar por lotes un conjunto de cambios para que se puedan deshacer en una sola unidad atómica. De forma predeterminada, las acciones realizadas por un autor del diseñador de actividades se integran automáticamente en el sistema Deshacer/rehacer.

Demostraciones

Editar el ámbito y Deshacer/Rehacer.

Discusión

En este ejemplo se muestra cómo procesar por lotes un conjunto de cambios en el ModelItem árbol dentro de una sola unidad de trabajo. Tenga en cuenta que cuando se enlazan a valores de ModelItem directamente 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 varios cambios por lotes mediante código imperativo, 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 BeginEdit comando devuelve un EditingScope, que se puede usar 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. Un escenario que podría utilizar esta funcionalidad sería cuando los cambios de varios diálogos deben confirmarse o revertirse por separado, siendo todos los cambios tratados como una sola operación atómica. En este ejemplo, los ámbitos de edición se apilan mediante un ObservableCollection<T> de tipo ModelEditingScope. Se utiliza ObservableCollection<T> para que la profundidad del anidamiento se pueda observar en la superficie del diseñador.

Para configurar, compilar y ejecutar el ejemplo

  1. Compile y ejecute el ejemplo y, a continuación, use los botones de la izquierda para modificar el flujo de trabajo.

  2. Haga clic en Abrir ámbito de edición.

    1. Este comando llama al método BeginEdit, que crea un ámbito de edición y lo inserta en la pila de edición.

    2. A continuación, se agregan tres actividades al objeto seleccionado ModelItem. Tenga en cuenta que si no se hubiera abierto el ámbito de edición con BeginEdit, aparecerán tres nuevas actividades 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.

  3. Presione Cerrar ámbito de edición para confirmar el ámbito de edición. Las tres actividades aparecen en el diseñador.