Résumé
La grille d’Infragistics est une des plus performantes et complètes sur le marché. Il est donc normal que plusieurs de nos clients l’utilisent. Le seul inconvénient c’est que pour l’intégration à WPF, Infragistics prend en charge le « Binding » et empêche souvent les stratégies standards MVVM. Ce qui suit démontre une problématique courante ainsi que la façon de régler le problème.
Problématique
Pour charger la grille, on fait le « Binding » avec l’entité. La grille se charge ensuite automatiquement ou selon un format désiré. Par la suite, il est impossible de mettre le « Binding » en mode « PropertyChanged ». Des fois on préfèrerait une logique de « PropertyChanged » et d’autres fois c’est essentiel. Par exemple, lorsqu’une propriété Booléenne de l’entité est liée, la grille affiche une case à cocher (CheckBox). Comme la propriété n’est pas en mode PropertyChanged, il faut cliquer ailleurs après avoir coché l’information pour que la modification soit transmise à l’entité.
Solution
Dans le « Xaml » qui contient le contrôle de la grille, il faut enregistrer l’évènement « CellChanged ».
<igDP:XamDataGrid Name="grdExample" CellChanged="grdExample_CellChanged">
Ensuite dans le code, de la page, sous la méthode CellChanged, on place les lignes suivantes :
private void grdExample_CellChanged(object sender, CellChangedEventArgs e)
{
grdExample.ExecuteCommand(DataPresenterCommands.EndEditModeAndAcceptChanges);
grdExample.ExecuteCommand(DataPresenterCommands.StartEditMode);
}
(Note : L’exemple se base sur la version 9.1 ou 9.2)