2010-06-19 9 views
0

J'ai un contentcontrol dans mon Wpf-App (MVVM) qui est lié à un objet et affiche les propriétés des objets dans les zones de texte, afin que l'utilisateur puisse modifier les valeurs des propriétés. Je souhaite implémenter la fonctionnalité annuler/rétablir avec le modèle de commande du GoF. Pour cela j'ai besoin d'un point où je peux créer la commande et la placer dans mon non-manageur. Mon idée était d'ajouter un bouton de soumission. Lorsque le bouton est enfoncé, je mets à jour les sources des zones de texte (mes propriétés) et crée mon objet de commande pour rendre les modifications annulables (en sauvegardant l'ancien état de l'objet et le nouvel état). Mais: - Pour utiliser un bouton de soumission, je dois définir UpdateSourceTrigger des zones de texte sur Explicit. Si je veux mettre à jour mes sources j'ai besoin de référencer les contrôles à mon avis, ce qui est mauvais pour autant que j'ai appris. Comment puis je faire ça? Avec MVVM, je dois créer une commande (commande WPF, pas ma commande undo redo) pour le SubmitButton mais je ne vois pas comment appliquer les changements aux propriétés de cette commande sans faire référence aux zones de texte (elles sont également générées via des datatemplates).WPF MVVM UpdateSourceTrigger = Excelle

Merci Walter

Répondre

0

Je suppose que votre TextBox contrôles sont liés aux propriétés de la classe ViewModel. Si vous liez votre bouton de soumission à un ViewModel Command qui à son tour peut vous ajouter la commande appropriée Command Pattern Collection et modifie également certaines propriétés ViewModel, les valeurs dans les contrôles Textbox seront également mises à jour. Maintenant, pour Textbox pour mettre à jour sa valeur lorsque la valeur d'une propriété est liée à des modifications, la classe ViewModel doit implémenter l'interface INotifyPropertyChanged et déclencher l'événement PropertyChanged du setter de propriété avec le nom de cette propriété en tant qu'argument.

+0

Encore une chose, pour stocker l'état actuel de l'objet à partir d'une commande dans la classe ViewModel, vous n'avez pas besoin de références aux contrôles TextBox. Vous pouvez directement accéder aux propriétés de la classe ViewModel car la View est en fait liée à ViewModel. – decyclone