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. |
|
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. |
|
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. |
|
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. |
|
.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. |
|
Regras de limites |
Uma regra de limites é usada especificamente para restringir os limites de uma forma. |
|
Regras de seleção |
Especificamente, a regras de seleção restringem o que o usuário pode selecionar. |
|
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. |
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