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: (

Était-ce utile?

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" ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top