Partilhar via


Usando o escopo de edição

O exemplo UsingEditingScope demonstra como agrupar um conjunto de alterações para que elas possam ser desfeitas em uma única unidade atômica. Por padrão, as ações executadas por um autor de designer de atividades são automaticamente integradas ao sistema Desfazer/Refazer.

Demonstra

Editando escopo e Desfazer e Refazer.

Debate

Este exemplo demonstra como agrupar um conjunto de alterações na ModelItem árvore dentro de uma única unidade de trabalho. Observe que, ao vincular a ModelItem valores diretamente de um designer WPF, as alterações sã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, são adicionadas três atividades. Quando a edição começa, BeginEdit é chamada uma instância do ModelItem. As alterações feitas na ModelItem árvore dentro desse escopo de edição são agrupadas em lotes. O BeginEdit comando retorna um EditingScope, que pode ser usado para controlar essa instância. Ou OnCompleteOnRevert pode ser chamado para confirmar ou reverter o escopo de edição.

Você também pode aninhar EditingScope objetos, o que permite que vários conjuntos de alterações sejam rastreados como parte de um escopo de edição maior e possam ser controlados 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. Neste exemplo, os escopos de edição são empilhados usando um ObservableCollection<T> do tipo ModelEditingScope. O ObservableCollection<T> é usado para que a profundidade da nidificação possa ser observada na superfície do projetista.

Para configurar, compilar e executar o exemplo

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

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

    1. Este comando chama BeginEdit um escopo de edição e o envia para a pilha de edição.

    2. Três atividades são então adicionadas ao arquivo ModelItemselecionado. Observe que, se o escopo de edição não tivesse sido aberto com BeginEdit, três novas atividades apareceriam na tela do designer. Como essa operação ainda está pendente no EditingScope, o designer ainda não está atualizado.

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