/ / bascule sur un clic de souris sur une ligne

bascule sur le clic de la souris sur la ligne - wpf, case à cocher

J'ai un DataGrid qui a quelques colonnes de texte et une colonne de modèle avec une case à cocher. Je dois activer cette case à cocher lorsque l'utilisateur clique n'importe où dans cette ligne. Quelle est la meilleure façon de le faire?

Pour le moment, je bascule la case à cocher sur le changement d'élément sélectionné et sur l'événement de clic du bouton gauche de la souris de la souris. Mais cela a 2 problèmes.

Le premier problème est la situation lorsque DataGrid ajuste databound. La première rangée est sélectionnée. Mais lorsque je clique sur une cellule, l’événement DataRowCell.MouseLeftButtonDown ne se déclenche pas pour une raison inconnue. La case à cocher ne devient donc pas cochée. La solution possible consiste à désélectionner la première ligne après la liaison de données.

Le deuxième problème est que la case à cocher est basculéedeux fois lorsque l'utilisateur clique directement sur la case à cocher située sur une autre ligne. Il en résulte que la case à cocher est activée deux fois, ce qui signifie que la valeur cochée ne change pas.

Alors, quel est le meilleur moyen de mettre en œuvre l'exigence?

Réponses:

0 pour la réponse № 1

Avez-vous essayé de relier la case à cocherpropriété à la ligne est la propriété choisie? Vous n'avez pas spécifié si la valeur cochée est toujours désactivée par défaut, sauf si vous cliquez dessus. Si ce n'est pas le cas, vous pouvez essayer d'utiliser un IValueConverter personnalisé pour changer les valeurs.


0 pour la réponse № 2

Définissez CheckBox.IsEnabled = false pour empêcher l'utilisateur de l'activer. Définissez le contrôle DataGrid en lecture seule sur la première ligne non focalisée.