8
votes

IeditableObject dans mvvm

Pouvez-vous penser à un scénario où ieditableObject serait toujours utile dans une application WPF basée sur MVVM? Si oui, avez-vous un exemple qui le démontre?


0 commentaires

3 Réponses :


15
votes

J'ai utilisé ieditableObject 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 () lorsque la boîte de dialogue s'ouvre, Endedit () Lorsque l'utilisateur clique sur OK, et AnnulerEdit () Lorsque l'utilisateur clique sur Annuler.

ieditableObject est une bonne interface à tout moment que vous souhaitez pouvoir rétablir les modifications apportées.


4 commentaires

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 , 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.



2
votes

Dans un type étant affiché dans un DataGrid . Ceci était nécessaire depuis que lorsque j'utilise des onglets et un datagrid 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 si un la cellule était active; Rouler les changements puisqu'ils n'étaient pas commis. T

Il y a un comportement appliqué sur le DataGrid pour atteindre cette fonctionnalité, mais la partie ieditable est ci-dessous. xxx


0 commentaires

2
votes

J'ai une implémentation de ieditableObject 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.


0 commentaires