Il comando in un DataGridTemplateColumn WPFToolkit non funziona
-
05-07-2019 - |
Domanda
Sto usando il DataGrid di WPFToolkit e sto cercando di far funzionare un pulsante di modifica, ecco la colonna:
<my:DataGridTemplateColumn>
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding EditVenueCommand}" >Edit</Hyperlink>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
e visualizzo il seguente errore:
Errore percorso BindingExpression: proprietà 'EditVenueCommand' non trovata su 'oggetto' '' Venue '(HashCode = 18626439)'. BindingExpression: Path = EditVenueCommand; DataItem = 'Venue' (HashCode = 18626439); l'elemento target è 'Hyperlink' (HashCode = 32883419); la proprietà target è 'Command' (digitare 'ICommand')
EditVenueCommand si attiva perfettamente quando si trova all'esterno della griglia.
inoltre, il motivo per cui sto usando un DataGridTemplateColumn anziché un DataGridHyperlinkColumn è perché non sono riuscito a farlo funzionare neanche :(
Soluzione
Ciò che sta accadendo nel tuo codice è che l'associazione sta trattando " EditVenueCommand " come proprietà che dovrebbe trovare nel datacontext del modello di dati.
In realtà non dovresti usare un Binding per agganciare un comando comunque, basta specificare lo spazio dei nomi + tipo + campo comando in questo modo:
Command="myns:MyType.EditVenueCommand"
Dove myns è mappato al tuo spazio dei nomi CLR. Ad esempio:
<Window xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssemblyName" ...