Pouvez-vous penser à un scénario où ieditableObject code> serait toujours utile dans une application WPF basée sur MVVM? Si oui, avez-vous un exemple qui le démontre? P>
3 Réponses :
J'ai utilisé ieditableObject code> dans l'une de mes applications. Par exemple, si vous avez une boîte de dialogue permettant d'éditer quelque chose, vous pouvez implémenter ieditableObject sur votre viewModel. Vous appelez beginedit () code> lorsque la boîte de dialogue s'ouvre, Endedit () code> Lorsque l'utilisateur clique sur OK, et AnnulerEdit () Code> Lorsque l'utilisateur clique sur Annuler. p>
ieditableObject code> est une bonne interface à tout moment que vous souhaitez pouvoir rétablir les modifications apportées. p>
Placez-vous les méthodes dans chaque classe de menuLodel ou simplement dans la classe abstraite d'origine? Si la classe d'origine, comment faites-vous là-bas. Je pensais à récupérer le modèle à nouveau à partir de la base de données, mais les modèles n'ont pas de classe parent conjointe. Je ne suis pas sûr de la méthode de réflexion car je ne modifie que la partie modèle.
Ça dépend. Je ne ferais que l'implémenter dans la classe de base abstrait si les modèles ont une fonctionnalité commune à exécuter sur ces événements. Si tel est le cas, vous pouvez l'implémenter là-bas, mais à l'intérieur de cela, appelez une méthode abstraite, comme OneBeginedit (), qui dérivent des classes doivent fournir. De cette façon, vous avez des fonctionnalités communes et spécifiques couvertes.
J'ai un point de vue qui est une collection d'objets. Je souhaite utiliser une boîte de dialogue pour modifier l'élément de grille sélectionné. Quels implements ieditabiloplject code>, la vue contenant la grille, le mode de vue à laquelle la grille est liée ou la classe que la vue contient une collection de?
@MarkRichman Je dirais que la classe que le point de vue contient une collection de, car c'est le seul endroit où cela a du sens. Beginedit, endessionnaire et annulez très bien la carte à une boîte de dialogue modale avec les boutons OK et Annuler.
Dans un type étant affiché dans un Il y a un comportement appliqué sur le DataGrid code>. Ceci était nécessaire depuis que lorsque j'utilise des onglets et un datagrid code> est en cours de stockage dans cet onglet Changement de la commutation des onglets nécessaires pour forcer un commit pour ainsi dire dans le DataGrid code> si un la cellule était active; Rouler les changements puisqu'ils n'étaient pas commis. T DataGrid code> pour atteindre cette fonctionnalité, mais la partie ieditable code> est ci-dessous. P>
J'ai une implémentation de ieditableObject code> dans ma candidature afin que je puisse empêcher de mettre à jour mon modèle de données si ce que l'utilisateur est entré n'est pas valide et réveille les valeurs d'origine si l'utilisateur abandonne les changements. P>