2012-07-25 4 views
0

j'ai souscrit parDataGrid WPF événement se déclenche SelectedCellsChanged deux fois

_itemsGrid.SelectedCellsChanged += Handle_SelectedCellsChangedEvent; 

à l'événement DataGrid WPF SelectedCellsChanged et lors de la connexion via

private void Handle_SelectedCellsChangedEvent (object sender, SelectedCellsChangedEventArgs args) 
{ 
    Logger.DoLogging("args.AddedCells.Count={0}, args.RemovedCells.Count={1}.", args.AddedCells.Count, args.RemovedCells.Count); 
    ... 
} 

Je vois que, parfois, pour une ligne changement de sélection, il y a deux appels :

    1. AddedCells.Count = 4, RemovedCells.Count = 0
    2. AddedCells.Count = 0, RemovedCells.Count = 4

Maintenant, ce comportement peut être inconfortable ou inattendu, mais n'est pas en soi un problème. Mon vrai problème est que dans certaines conditions, la grille de données oublie de désélectionner les cellules supprimées. Cela signifie que, après l'appel et le traitement du gestionnaire d'événements, les anciennes cellules sélectionnées sont toujours sélectionnées visuellement. Mon hypothèse est que cet oubli est lié à une boîte de dialogue que j'affiche à l'attention de l'utilisateur.

Est-ce que quelqu'un d'autre a vu la grille de données «oublier» de désélectionner des cellules?

Merci Frank

Répondre

2

L'événement encapsule non seulement l'action de la notification de cellules étant ajouté à la sélection (à savoir le SelectedCells), mais il avertit également des cellules retirées de la sélection. Cela vous permet d'agir sur les deux ou les deux types de changement de sélection.

Je crois que cela correspond au fait que NotifyCollectionChangedEventArgs a une seule action. Ainsi, pour afficher une modification dans la collection SelectedCells de la grille, les éléments doivent être ajoutés et supprimés. La notification de cette addition et suppression est séparée en notifications distinctes, car l'événement ne permet pas de les afficher comme une seule.

+0

Salut Damian, merci pour votre réponse. J'ai cependant édité ma question, parce que mon problème original n'est pas les 2 événements mais la grille de données oubliant de désélectionner les cellules enlevées. – FrankE

Questions connexes