La commande dans un WPFToolkit DataGridTemplateColumn ne fonctionne pas
-
05-07-2019 - |
Question
J'utilise le DataGrid du WPFToolkit et j'essaie d'obtenir un bouton d'édition, voici la colonne:
<my:DataGridTemplateColumn>
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding EditVenueCommand}" >Edit</Hyperlink>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
et j'obtiens l'erreur suivante:
Erreur de chemin BindingExpression: propriété 'EditVenueCommand' non trouvée sur 'objet' '' Lieu '(HashCode = 18626439)'. BindingExpression: Path = EditVenueCommand; DataItem = 'Venue' (HashCode = 18626439); l'élément cible est 'Hyperlien' (HashCode = 32883419); La propriété cible est 'Command' (type 'ICommand')
la commande EditVenue se déclenche parfaitement lorsqu'elle se trouve en dehors de la grille.
aussi, la raison pour laquelle j'utilise un DataGridTemplateColumn au lieu d'un DataGridHyperlinkColumn est parce que je ne pourrais pas obtenir que cela fonctionne soit: (
La solution
Ce qui se passe dans votre code, c'est que la liaison traite "EditVenueCommand". comme une propriété qu'il devrait trouver dans le contexte de données du modèle de données.
De toute façon, vous ne devriez pas utiliser de liaison pour associer une commande. Utilisez simplement spécifier le champ de l'espace de noms + type + comme suit:
Command="myns:MyType.EditVenueCommand"
Où myns est mappé sur votre espace de noms CLR. Par exemple:
<Window xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssemblyName" ...