Question

Je mélange probablement des responsabilités (et peut-être même terminologie), mais je ne peux pas tout à fait envelopper la tête autour de cela.

Y at-il relation entre le modèle de commande et les commandes trouvées dans MVVM Light (et donc aswell dans WPF)? J'aimerais vraiment mettre en œuvre une sorte de undo / redo mécanisme mais ne peut pas comprendre tout à fait s'il y a un « MVVM Light Way » de le faire.

Et si ce n'est pas par rapport à la lumière MVVM, comment pourrais-je aborder commander avec Undo / Redo dans « brut » en ne travaillant pas contre? MVVM WPF Lumière

Était-ce utile?

La solution

Le commandant en MVVM Light and WPF en général est un moyen pour encapsuler des ensembles arbitraires de fonctionnalités dans un seul objet et l'interface utilisateur, et pour câbler un nombre quelconque d'éléments d'interface utilisateur pour exécuter cette action.

Ces commandes peuvent être incorporés dans une mise en œuvre de modèle de commande de fonctionnalité undo / redo, mais vous avez besoin de plus.

Vous pouvez rouler votre propre pile de commande, qui est la route que je l'ai pris dans mon projet en cours WPF (en utilisant Prism).

En fait, il est un changement d'état d'esprit où chaque changement qu'un utilisateur peut faire via l'interface utilisateur

  1. est enveloppé dans une commande
  2. a une commande d'annulation correspondant
  3. est poussé à une pile

Il y a aussi des projets open-source disponibles pour aider, y compris http://undo.codeplex.com/ , qui est un projet parallèle de Kirill Osenkov, membre de l'équipe Visual studio.

Autres conseils

J'ai mis en undo / redo pour une application WPF et la publication de mon code undo / redo http: //muf.codeplex. com / .

Je considérais essayer l'approche recommandée d'utiliser le modèle de commande pour encapsuler la logique. Il semble bien sur le papier, mais dans mon cas, il semblait très difficile de comprendre comment mettre toutes les actions en une commande qui pourrait de manière fiable annuler / refaire une série de changements. Au lieu de cela, je pris l'approche de « suivi » du modèle sous-jacent pour les changements et le stockage de ces changements dans la pile d'annulation. Ceci est un peu comme le modèle de commande, mais dans une approche « bottom up ». Les actions undo « tombent » à la suite de la modification du modèle.

Les mesures sont rassemblées en interceptant des changements dans les poseurs du modèle, de les stocker dans une unité de changement de délégués pour annulation / répétition de la modification, et en mettant ensuite que sur une pile de modifications. La bibliothèque MUF comprend la logique de gestion de la pile, la création d'une unité de changement, et plus encore.

Commentaires et questions sont les bienvenus sur le site CodePlex ( http://muf.codeplex.com/ ) . Vous trouverez également une documentation complète et des applications exemples là-bas.

Vous pouvez également l'obtenir par NuGet. Il suffit de chercher « MUF » ou « Annuler cadre appareillés ». Il inclut le support pour Silverlight 4.0, ainsi que .NET 3.5, 4.0 et WP7.

Je ne connais pas toutes les fonctionnalités undo / redo inhérente à MVVM ou WPF j'ai peur.

MVVM Light est une boîte à outils très bon léger pour rapidement mettre en œuvre MVVM seulement. Tous les modèles supplémentaires que vous allez avoir à vous mettre en œuvre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top