Je travaille sur une application Silverlight LoB dont les concepteurs veulent avoir une interface à onglets, similaire à l'interface de Visual Studio (nous utiliserons probablement les contrôles Telerik Rad pour les onglets d'ancrage). Après avoir fait un prototype, l'interface fonctionne bien jusqu'à présent, mais j'ai des problèmes pour implémenter la fonctionnalité annuler/rétablir dans un projet MVVM.Comment implémenter undo/redo dans une application MVVM?
Undo/fonctionnalité redo doit:
- Sur undo/redo, restaurer l'état de l'interface utilisateur, -à-dire mise au point de retour, sélection, etc. pour le contrôle (s) (par exemple une zone de texte) que le changement est originaire de.
- Avoir un général, j'utiliser le modèle de commande pile
Undo/Redo per-view, mais je ne suis pas sûr de savoir comment appliquer cela avec MVVM.
Je l'ai utilisé commandant & de liaison pour obtenir le couplage lâche idéalisée des vues & vue-modèles, mais il fait undo/redo beaucoup plus délicat, car la vue modèle n'a pas concept de la vue et l'état de la vue lorsqu'une commande est reçue ou qu'une propriété liée est modifiée. Il semble que j'ai besoin d'un type de suivi de service dont la vue est active chaque fois que l'utilisateur effectue une action annulable et obtient l'état pour une restauration ultérieure. Y at-il un consensus sur ce qui est la meilleure pratique pour implémenter annuler/rétablir dans MVVM? J'ai regardé avec intérêt comment Daniel Vaughan le fait dans son projet de calcium; Blend a apparemment été écrit en utilisant le pattern MVVM et il se comporte exactement comme je le souhaite, ce serait génial si MS m'expliquait comment ils l'ont fait!
Je vais maintenant aussi étudier le projet de calcium en fonction de votre mention. Merci pour ça. –
Merci pour votre réponse, HiTech. Quand vous dites "annuler est seulement dans les contrôles individuels" voulez-vous dire que, par exemple, sur un formulaire (vue) avec quelques TextBox, l'utilisateur doit se concentrer sur un TextBox où un changement est né pour lui afin d'annuler/refaire Quel changement a-t-il apporté via cette TextBox? Séparer complètement les actions de l'interface - cela ne signifierait-il pas l'interdiction de la liaison TwoWay entre les contrôles de la vue et les propriétés du modèle de vue? Malheureusement, notre application a à la fois une surface de dessin interactive (toile) et des formes comme Blend/VS; c'est complexe. Appréciez vraiment vos pensées! – JamesCo