Compartir a través de


Responder a los cambios y propagarlos

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 norma, tenga en cuenta estas técnicas en el orden siguiente:

Technique 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 de almacenamiento calculadas y personalizadas
Defina una propiedad de dominio de almacenamiento personalizado. Una propiedad de dominio almacenada en otras partes del modelo o externamente. Por ejemplo, podrías analizar una cadena de expresión en un árbol en el modelo. Propiedades de almacenamiento calculadas y personalizadas
Invalidar controladores de cambios, como OnValueChanging y OnDeleting Mantenga sincronizados los distintos elementos y mantenga los valores externos sincronizados con el modelo.

Restrinja los valores a intervalos definidos.

Se llama inmediatamente antes y después del valor de propiedad y otros cambios. Puede finalizar el cambio lanzando una excepción.
Controladores de cambio 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. Úselos para mantener una parte de la tienda sincronizada con otra. Las reglas propagan cambios dentro del modelo
Eventos de la tienda 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. Utilice eventos del 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 generalmente se realiza en una sobrecarga de InitializeInstanceResources y debe hacerse para cada elemento.

Normalmente, estos eventos se producen fuera de una transacción.
Cómo interceptar un clic \[ratón\] en una figura o decorador
Reglas de límites Una regla de límites se usa específicamente para restringir los límites de una forma. BoundsRules Restringir la ubicación y el tamaño de la forma
Reglas de selección Las reglas de selección restringen específicamente lo que el usuario puede seleccionar. Cómo: Acceder y restringir la selección actual
OnAssocatedPropertyChanged Indique los estados de los elementos del modelo mediante características de formas y conectores como sombra, puntas de flecha, color y anchos de línea y estilo. Actualización de 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.

Normalmente, las reglas se aplican al final a la transacción en la que se ha producido el cambio y los eventos se aplican después de confirmar los cambios en una transacción.

Utilice eventos de almacén para sincronizar el modelo con objetos fuera del almacén y reglas para mantener la coherencia dentro del almacén.

  • Creación de reglas personalizadas Cree una regla personalizada como una clase derivada de una regla abstracta. También debe notificar al entorno sobre la regla personalizada. Para obtener más información, consulte Reglas de propagación de 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 EventManagerDirectorypropiedad para suscribirse al evento. Para obtener más información, vea Controladores de eventos propagan 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 deshace ese cambio, el valor se restablece al valor original durante la acción de deshacer. Cuando se genera un evento, necesita restaurar manualmente el valor a su valor original. Para obtener más información sobre las transacciones y deshacer, consulte Cómo usar transacciones para actualizar el modelo.

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