Partilhar via


Respondendo a e propagação de alterações

Quando um elemento é criado, excluído ou atualizado, você pode escrever código que propaga a alteração para outras partes do modelo ou para recursos externos como, por exemplo, arquivos, bancos de dados ou outros componentes.

Nesta seção

Como diretriz, considere estas técnicas na seguinte ordem:

Técnica

Cenários

Para obter mais informações

Defina uma propriedade de domínio calculado.

Uma propriedade de domínio cujo valor é calculado a partir de outras propriedades do modelo.Por exemplo, um preço que é a soma dos preços de elementos relacionados.

Propriedades de armazenamento de calculado e personalizadas

Defina uma propriedade de domínio de armazenamento personalizado.

Uma propriedade de domínio armazenada em outras partes do modelo ou externamente.Por exemplo, você poderia analisar uma seqüência de caracteres de expressão em uma árvore no modelo.

Propriedades de armazenamento de calculado e personalizadas

Substituir os manipuladores de alteração, como OnValueChanging e OnDeleting

Manter os diferentes elementos em sincronia e manter valores externos em sincronia com o modelo.

Restringir os valores a intervalos definidos.

Chamado imediatamente antes e depois o valor da propriedade e outras alterações.Você pode encerrar a alteração, lançando uma exceção.

Manipuladores de alteração de valor de propriedade de domínio

Regras

Você pode definir regras que estão enfileiradas para execução apenas antes do final de uma transação em que ocorreu uma alteração.Eles não são executados em Desfazer ou refazer.Para usá-los para manter uma parte do armazenamento em sincronia com outra.

Regras de propagam alterações dentro do modelo

Eventos de armazenamento

O armazenamento de modelagem fornece notificações de eventos como, por exemplo, adicionando ou excluindo um elemento ou link ou alterar o valor de uma propriedade.O evento também é executado em Desfazer e refazer.Utilize os eventos de armazenamento para atualizar os valores que não estão no armazenamento.

Manipuladores de eventos propagam alterações fora do modelo

.NET completos

Formas têm manipuladores de eventos que respondam a cliques de mouse e outros gestos.Você precisa registrar esses eventos para cada objeto.O registro é feito em uma substituição do InitializeInstanceResources e deve ser feito para cada elemento.

Geralmente, esses eventos ocorrem fora de uma transação.

Como: interceptar um clique em uma forma ou a decorador

Regras de limites

Uma regra de limites é usada especificamente para restringir os limites de uma forma.

BoundsRules restringir o tamanho e a localização de forma

Regras de seleção

Especificamente, a regras de seleção restringem o que o usuário pode selecionar.

Como: acessar e restringir a seleção atual

OnAssocatedPropertyChanged

Indica estados os elementos do modelo, usando os recursos de formas e conectores, como sombra, pontas de seta, cor e larguras de linha e estilo.

Atualizando formas e conectores para refletir o modelo

Comparando as regras e os eventos de armazenamento

Notifiers de alteração, regras e eventos são executados quando ocorrerem alterações em um modelo.

Geralmente, as regras são aplicadas na transação final em que a alteração ocorreu, e eventos são aplicados depois que as alterações em uma transação são confirmadas.

Utilize os eventos de armazenamento para sincronizar o modelo com objetos fora da loja e regras para manter a consistência no armazenamento do.

  • Criação de regras personalizadas criar uma regra personalizada como uma classe derivada de uma regra abstrata.Você também deve notificar o framework sobre a regra personalizada.Para obter mais informações, consulte Regras de propagam alterações dentro do modelo.

  • Inscrições em eventos antes de assinar a um evento, crie um manipulador de eventos e o delegado.Em seguida, use o EventManagerDirectorypropriedade para assinar o evento.Para obter mais informações, consulte Manipuladores de eventos propagam alterações fora do modelo.

  • Desfazendo alterações quando você desfazer uma transação, eventos são gerados, mas as regras não são aplicadas.Se uma regra altera um valor e você desfaça a alteração, o valor é redefinido para o valor original durante a ação de desfazer.Quando um evento é gerado, você deve alterar manualmente o valor volta para seu valor original.Para saber mais sobre transactons e desfazer, consulte Como: usar transações para atualizar o modelo.

  • Passar argumentos de evento para eventos e regras ambos os eventos e as regras são passadas um EventArgs parâmetro que possui informações sobre como o modelo alterado.

Consulte também

Conceitos

Como: interceptar um clique em uma forma ou a decorador

Outros recursos

Escrever código para personalizar uma linguagem específica de domínio