Comment lier une Commande pour double-cliquez sur une ligne dans la grille de données

J'ai développé un WPF UserControl qui est destiné à être utilisé comme une liste de sélection comme suit:

  • Une grille de données lié à un CollectionView des entités (par exemple, des Employés)
  • Une zone de texte au-dessus de la grille de données qui peut être utilisé pour filtrer les éléments affichés dans la grille de données.

Je veux exposer une Commande qui sera exécutée lorsque l'utilisateur double-clique sur une ligne dans la grille de données. Le récipient peut alors réagir à cette situation en faisant quelque chose avec le SelectedItem dans la grille de données.

Jusqu'à présent, j'ai essayé de gérer le double-clic comme suit:

<DataGrid IsReadOnly="True">
    <DataGrid.InputBindings>
        <MouseBinding MouseAction="LeftDoubleClick" Command="... />
    </DataGrid.InputBindings>
...

Cependant la double-cliquez sur l'événement encore déclenché lorsque l'utilisateur clique dans la grille de données d'en-tête. Je aimerais être en mesure de le limiter, de sorte que la Commande n'est exécutée lorsque le double clic est dans le corps de la grille de données. Est-il un déclarative façon de le faire?

Mise à JOUR

Je suis juste se familiariser avec WPF et MVVM, et je suis vraiment à la recherche de conseils sur la façon de mettre en œuvre à faible niveau de composants réutilisables comme ça. Tout les conseils généraux seront également reçu avec gratitude et upvoted. Comme il est, je suis en supposant que je veux ce UserControl:

  • Exposer une propriété de dépendance "SelectedItem" qui est lié à la grille du SelectedItem
  • Exposer un RoutedEvent "ItemDoubleClick" ou similaire qui est déclenché lorsque l'utilisateur double-clique sur une ligne.
  • Mettre en œuvre ICommandSource et appel CommandHelpers.ExecuteCommandSource(this) à partir de la ligne double-cliquez sur gestionnaire d'événement.

OriginalL'auteur Joe | 2011-04-27