Respuesta a cambios y propagación

Cuando se crea, elimina o actualiza un elemento, puede escribir código que propague el cambio a otras partes del modelo o a recursos externos, como archivos, bases de datos u otros componentes.

Referencia

Como guía, considere estas técnicas en el orden siguiente:

Técnica Escenarios Para obtener más información
Defina una propiedad de dominio calculado. Propiedad de dominio cuyo valor se calcula a partir de otras propiedades del modelo. Por ejemplo, un precio que es la suma de los precios de los elementos relacionados. Propiedades calculadas y de almacenamiento personalizado
Defina una propiedad de dominio de almacenamiento personalizado. Propiedad de dominio almacenada en otras partes del modelo o externamente. Por ejemplo, podría analizar una cadena de expresión en un árbol del modelo. Propiedades calculadas y de almacenamiento personalizado
Invalidación de controladores de cambios, como OnValueChanging y OnDeleting Mantenga sincronizados los distintos elementos y los valores externos con el modelo.

Restrinja los valores a intervalos definidos.

Se le llama inmediatamente antes y después del valor de propiedad y otros cambios. Puede finalizar el cambio iniciando una excepción.
Controladores de los cambios de valor de propiedad de dominio
Reglas Puede definir reglas que se ponen en cola para su ejecución justo antes del final de una transacción en la que se ha producido un cambio. No se ejecutan en Deshacer o Rehacer. Úselas para mantener una parte del almacén sincronizado con otra. Las reglas propagan los cambios dentro del modelo
Eventos de almacén El almacén de modelado proporciona notificaciones de eventos como agregar o eliminar un elemento o vínculo, o cambiar el valor de una propiedad. El evento también se ejecuta en Deshacer y Rehacer. Use eventos de almacén para actualizar los valores que no están en el almacén. Los controladores de eventos propagan cambios fuera del modelo
Eventos de .NET Las formas tienen controladores de eventos que responden a los clics del mouse y otros gestos. Debe registrarse para estos eventos para cada objeto. El registro se realiza normalmente en una invalidación de InitializeInstanceResources, y se debe realizar para cada elemento.

Normalmente, estos eventos se producen fuera de una transacción.
Cómo: Interceptar un clic en una forma o decorador
Reglas de límites Una regla de límites se usa específicamente para restringir los límites de una forma. Ubicación y tamaño de las reglas de restricción de formas BoundsRules
Reglas de selección Las reglas de selección restringen específicamente lo que el usuario puede seleccionar. Cómo: Tener acceso y restringir una selección
OnAssocatedPropertyChanged Indique los estados de los elementos del modelo utilizando características de las formas y los conectores, como la sombra, las puntas de flecha, el color y el ancho y el estilo de las líneas. Actualizar formas y conectores para reflejar el modelo

Comparación de reglas y eventos de almacenamiento

Los notificadores de cambios, las reglas y los eventos se ejecutan cuando se producen cambios en un modelo.

Las reglas se suelen aplicar en la transacción final en la que se ha producido el cambio, y los eventos se aplican después de confirmar los cambios en una transacción.

Use los eventos del almacén para sincronizar el modelo con objetos externos al almacén, y las reglas para mantener la coherencia dentro del almacén.

  • Creación de reglas personalizadas Puede crear una regla personalizada como una clase derivada de una regla abstracta. También debe informar al marco sobre la regla personalizada. Para obtener más información, vea Las reglas propagan los cambios dentro del modelo.

  • Suscribirse a eventos Para poder suscribirse a un evento, cree un controlador de eventos y un delegado. A continuación, use la propiedad EventManagerDirectory para suscribirse al evento. Para obtener más información, consulte Controladores de eventos Propagar cambios fuera del modelo.

  • Deshacer cambios Al deshacer una transacción, se generan eventos, pero no se aplican reglas. Si una regla cambia un valor y se deshace ese cambio, el valor se restablece al valor original durante la acción deshacer. Cuando se genera un evento, debe cambiar manualmente el valor a su valor original. Para obtener más información sobre las transacciones y deshacer, vea Uso de transacciones para actualizar el modelo.

  • Pasar argumentos de evento a reglas y eventos Tanto los eventos como las reglas se pasan un parámetro EventArgs que tiene información sobre cómo ha cambiado el modelo.