2010-01-19 9 views
0

Je suis actuellement en train de jouer avec WPF et la boîte à outils WPF qui contient un DataGrid de style WindowsForms.Boîte à outils WPF: DataGrid EventHandler pour CheckBoxColumn.CheckedChanged?

J'ai lié une liste d'objets personnalisés à la grille comme ItemsSource. Ces objets contiennent deux propriétés booléennes modifiables à l'aide de la grille de données. La synchronisation dans ma liste fonctionne correctement avec le modèle de liaison de données intégré, mais je dois appeler une autre méthode si l'une des valeurs CheckBox est modifiée pour sérialiser l'objet en XML. Malheureusement, je ne peux pas faire cette mise en cache dans ma classe de données, car elle ne connaît pas son fournisseur de cache.

donc je besoin d'un événement sur le DataGrid qui se déclenche juste après une valeur de case à cocher a changé.

J'ai déjà hérité d'une classe AutoCommitCheckBoxColumn du DataGridCheckBoxColumn d'origine qui remplace la méthode GenerateEditingElement(DataGridCell cell, object dataItem) ainsi que les gestionnaires checkbox_ (Un-) Checked.

Il est évident que je ne peux pas et ne veux pas appeler la méthode de la mise en cache d'ici soit - il doit être fait dans la classe de fenêtre où réside le DataGrid.

Alors - Je ne peux pas trouver un événement approprié pour ceci: Le MouseButton .. événements feu uniquement lorsque l'espace cellulaire externe et non la case intérieure dans une cellule est cliquée. CellEditEnding fonctionnera, mais n'est déclenché que si l'on sélectionne une autre cellule après avoir coché (non) coché une case. SourceUpdated ne se déclenche pas du tout.

Quelqu'un peut-il me aider avec un événement idéal? Ou puis-je déclencher en toute sécurité un événement sur le DataGrid à partir de ma classe AutoCommitCheckBoxColumn?

Merci beaucoup d'avance!

Répondre

0

Avez-vous envisagé d'utiliser des déclencheurs de données WPF?

Voir ici pour plus d'informations: http://en.csharp-online.net/WPF_Styles_and_Control_Templates -Data_Triggers

+1

Je résolu le problème en utilisant l'événement INotifyPropertyChanged: http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx Merci quand même. – Shackles