Pergunta

Provavelmente estou misturando algumas responsabilidades (e talvez até terminologia) aqui, mas não consigo entender isso.

Existe alguma relação entre o padrão de comando e os comandos encontrados na luz MVVM (e, portanto, também no WPF)? Eu realmente adoraria implementar algum tipo de mecanismo de desfazer / refazer, mas não consigo descobrir se existe um "caminho da luz MVVM" de fazê -lo.

E se isso não estiver em relação à luz MVVM, como eu poderia me aproximar do comando com o desfazer / refazer em "Raw" por não trabalhar contra o MVVM Light WPF?

Foi útil?

Solução

O comando na luz MVVM e no WPF em geral é uma maneira de encapsular conjuntos de funcionalidade arbitrários em um único objeto e interface e conectar qualquer número de elementos da interface do usuário para executar essa ação.

Esses comandos podem ser incorporados a uma implementação do padrão de comando da funcionalidade de desfazer/refazer, mas você precisa de mais.

Você pode rolar sua própria pilha de comando, que é a rota que eu segui no meu projeto WPF atual (usando Prism).

Basicamente, é uma mudança de mentalidade onde todas as mudanças que um usuário pode fazer através da interface do usuário

  1. está envolto em um comando
  2. tem um comando de desfazer correspondente
  3. é empurrado para uma pilha

Também existem projetos de código aberto disponíveis para ajudar com isso, incluindo http://undo.codeplex.com/, que é um projeto paralelo de Kirill Osenkov, membro da equipe do Visual Studio.

Outras dicas

Eu implementei o desfazer / refazer para um aplicativo WPF e publicar meu código de desfazer / refazer para http://muf.codeplex.com/.

Eu pensei em tentar a abordagem recomendada de usar o padrão de comando para encapsular a lógica. Parece bom no papel, mas, no meu caso, parecia muito desafiador descobrir como colocar todas as ações em um comando que pudesse desfazer / refazer com segurança um conjunto de alterações. Em vez disso, adotei a abordagem de "monitorar" o modelo subjacente para alterações e depois armazenar essas alterações na pilha de desfazer. Isso é como o padrão de comando, mas em uma abordagem "de baixo para cima". As ações de desfazer "caem" como resultado da alteração do modelo.

As ações são reunidas interceptando mudanças nos setters do modelo, armazenando -os em uma unidade de alteração com os delegados para desfazer / refazer a mudança e, em seguida, colocá -la em uma pilha de alterações. A biblioteca MUF inclui a lógica para gerenciar a pilha, criar uma unidade de mudança e muito mais.

Comentários e perguntas são bem -vindos no site CodePlex ( http://muf.codeplex.com/ ). Você também encontrará documentação completa e aplicativos de amostra lá.

Você também pode obtê -lo via Nuget. Basta procurar por "MUF" ou "Monitorado de Undos Framework". Inclui suporte para Silverlight 4.0, bem como .NET 3.5, 4.0 e WP7.

Não conheço nenhuma funcionalidade inerente a desfazer/refazer em MVVM ou WPF, tenho medo.

A MVVM Light é um kit de ferramentas leve muito bom para implementar rapidamente apenas o MVVM. Quaisquer padrões adicionais que você terá que se implementar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top