WPF DataGrid CellEditEnding - DataSet ne met pas à jour la ligne perdue Focus perdu
J'ai besoin d'être en mesure de mettre à jour les valeurs d'un ensemble de données une fois qu'une cellule perd le focus à partir de l'édition. Je sais que lorsque la cellule perd le focus (CellEditEnding), mais le problème est, la mise à jour de l'élément de contexte ne se produit pas jusqu'à se focaliser sur la ligne se produit réellement. Cela devient un problème quand il n'y a qu'un seul élément à gauche, car il ne peut jamais perdre le focus.
Comment faire en sorte que chaque fois qu'une colonne édition est complète (CellEditEnding), le contexte réel de cette ligne est mis à jour à ce point (et pas seulement lorsque la ligne perd le focus)
Merci d'avance!
source d'informationauteur Anthony Greco
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
DataGrid.CommitEdit
de votreDataGrid.CellEditEnding
gestionnaire, en étant sûr de la poignée de réentrée.Voici un article de blog qui décrit la technique:
J'ai rencontré un problème similaire, j'ai une ligne de grille de données qui contient 5 colonnes.
Les données de la 5 colonnes seront mis à jour dans la source qu'après l'ensemble de la ligne de grille de données a perdu le focus.
Après quelques recherches, j'ai trouvé un moyen facile de le faire.
C'est-à ajouter "UpdateSourceTrigger=LostFocus" dans votre liaison de données dans la cellule.
Par exemple:
Cela fera l'affaire, de sorte que lorsque chaque cellule perdu le focus, au lieu de la totalité de la ligne, les données de la cellule de mise à jour de la source immédiatement.
Simplement sauter à n'importe quel autre contrôle de votre boîte de dialogue en appelant [contrôle].Focus(). Le faire à l'intérieur de la OnClosing() de l'événement.
LostFocus est la valeur par défaut de mise à jour de déclenchement de la cellule de données. Mais la fenêtre elle-même et aussi la frontière ou le titre de la fenêtre (et là, le système de bouton "X") ne pourront pas obtenir une mise au point. C'est pourquoi le montage n'est pas la fin.
Vous pouvez utiliser le tout PreviewMouseMove événement à partir de n'importe quel autre objet.
Dans mon cas, je veux la grille de données de perdre le contrôle, avant d'ajouter une nouvelle ligne à.
MainWindow.xaml.cs
MainWindow.xaml
MainWindowViewModel.cs