Compartilhar via


Usando o escopo de edição

O exemplo UsingEditingScope demonstra como em lotes um conjunto de alterações de modo que eles possam ser desfeitos em uma única unidade atômica. Por padrão, as ações executadas por um autor do designer de atividade automaticamente são integradas desfazer/refazem o sistema.

Demonstra

Edite o escopo e desfaz e refaz.

Discussão

Este exemplo demonstra como agrupar um conjunto de alterações na árvore ModelItem dentro de uma única unidade de trabalho. Observe que ao associar aos valores de ModelItem diretamente de um designer de WPF, as alterações serão aplicadas automaticamente. Este exemplo demonstra o que deve ser feito quando várias alterações a serem feitas em lote estão sendo feitas por meio de código imperativo, em vez de uma única alteração.

Neste exemplo, três atividades são adicionadas. Quando editar começa, BeginEdit é chamado uma instância de ModelItem. As alterações feitas na árvore de ModelItem dentro desse escopo de edição são agrupadas. O BeginEdit comando retorna um EditingScope, que pode ser usado para controlar essa instância. Tanto OnComplete quanto OnRevert pode ser chamado para confirmar ou reverter o escopo de edição.

Você também pode aninhar objetos de EditingScope , que permite vários conjuntos de alterações ser controlado como parte de um escopo maior de edição e pode ser controlado individualmente. Um cenário que pode usar esse recurso seria quando as alterações de várias caixas de diálogo devem ser confirmadas ou revertidas separadamente, com todas as alterações sendo tratadas como uma única operação atômica. Nesse exemplo, os escopos de edição são empilhados usando ObservableCollection<T> de tipo ModelEditingScope. ObservableCollection<T> é utilizado para que a profundidade de aninhamento pode ser observada na superfície de designer.

Para configurar, compilar e executar o exemplo

  1. Crie e execute o exemplo e use os botões à esquerda para modificar o fluxo de trabalho.

  2. Clique em Abrir Escopo de Edição.

    1. Este comando chama BeginEdit que cria um escopo e envia de edição ele na pilha de edição.

    2. Três atividades são adicionadas a ModelItemselecionado. Observe que se o escopo de edição não tivesse sido aberto com BeginEdit, três novas atividades apareceriam na tela de designer. Porque esta operação ainda está pendente dentro de EditingScope, o designer não é atualizada ainda.

  3. Pressione Fechar Escopo de Edição para confirmar o escopo de edição. Três atividades aparecem no designer.