Le passage d'un Paramètre de Commande à partir d'une grille de données par le biais d'un Raccourci clavier
J'ai un wpf problème spécifique. J'essaie de supprimer une Ligne dans un Datagrid, par la définition d'un Raccourci clavier qui passe la Ligne sélectionnée de la grille de données comme un Commandparameter à une Commande.
C'est mon Raccourci clavier:
<UserControl.Resources >
<Commands:CommandReference x:Key="deleteKey" Command="{Binding DeleteSelectedCommand}"/>
</UserControl.Resources>
<UserControl.InputBindings>
<KeyBinding Key="D" Modifiers="Control" Command="{StaticResource deleteKey}"/>
</UserControl.InputBindings>
Je sais que cela fonctionne en fait, parce que je peux debug jusqu'à la DeleteSelectedCommand. Cependant, il vole une Exception parce que la DeleteSelectedCommand expectes une Ligne de la grille de données à supprimer, comme Paramètre Call.
Comment puis-je passer le SelectedRow par le Raccourci clavier?
Je veux le faire uniquement dans le code XAML, si possible, sans changer le Code Derrière.
OriginalL'auteur OnTheFly | 2011-11-21
Vous devez vous connecter pour publier un commentaire.
Plutôt que d'essayer d'utiliser un paramètre de la commande, la création d'une propriété pour stocker la ligne sélectionnée dans:
où le Modèle est la classe des objets que votre grille est de l'affichage.
Ajouter la propriété selectedItem sur le contrôle datagrid à utiliser la propriété:
ensuite votre commande passe à travers la ligne de la méthode:
et pour vos raccourcis clavier:
Espère que ça aide!
OriginalL'auteur Emy
Si votre grille de données a un nom, vous pouvez essayer de cible de cette façon:
(Note:
CommandParameter
est peut être liée uniquement .NET 4 (et probablement les versions suivantes) comme il a été transformé en une propriété de dépendance)Quelle est la version de .NET vous aide? Si vous êtes sur une version plus ancienne, vous devez l'indiquer clairement par la question des tags, dans v4.0 cette propriété est une propriété de dépendance...
J'ai eu une erreur dans ma configuration du projet. Maintenant que j'utilise .NET 4.0. J'obtiens une exception que mon CommandParameter est nul...
Ensuite, vous pourriez avoir mal orthographié le nom de la ou il n'est pas dans le champ d'application du raccourci clavier (par exemple, c'est dans le Template/DataTemplate). Ou bien sûr le
SelectedItem
est effectivement nulle. Il pourrait y avoir d'autres possibilités de cours. Vous mieux debug la liaison, à moins bien sûr que vous avez vérifié pour les erreurs de liaison déjà.CommandParameter n'est pas une DependencyProperty et ne peut pas être lié.
OriginalL'auteur H.B.
Il y a une propriété appelée CommandParameter sur le Raccourci clavier, rien mis ici sera passé à travers. Il n'est cependant pas une propriété de dépendance (en 3.5, 4.0 voir H. B. réponse) comme vous l'avez trouvé avec la Commande, inputbindings sont hors de l'arborescence d'héritage et donc ils n'avaient pas la peine de les rendre DP.
Vous aurez besoin d'utiliser la même solution que vous avez utilisé pour la liaison de la commande.
Il y a un exemple ici, http://www.wpfmentor.com/2009/01/how-to-add-binding-to-commandparameter.html
Le code xaml j'ai posté fonctionne pour moi, Dataresource les classes viennent de le posté URL.
OriginalL'auteur Adam Mills