Comando em uma WPFToolkit DataGridTemplateColumn não funciona
-
05-07-2019 - |
Pergunta
im usando DataGrid do WPFToolkit e im tentando obter um trabalho editar botão, aqui está a coluna:
<my:DataGridTemplateColumn>
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding EditVenueCommand}" >Edit</Hyperlink>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
e eu estou recebendo o seguinte erro:
BindingExpression erro caminho: 'EditVenueCommand' propriedade não encontrado na 'objeto' '' Local '(HashCode = 18626439)'. BindingExpression: Path = EditVenueCommand; DataItem = 'Local' (HashCode = 18626439); elemento alvo é 'hiperligação' (HashCode = 32883419); propriedade de destino é 'Command' (tipo 'ICommand')
o EditVenueCommand é fireing perfeitamente quando ele está fora da grade.
Além disso, a razão pela qual eu estou usando um DataGridTemplateColumn em vez de um DataGridHyperlinkColumn é porque eu não poderia chegar a esse trabalho ou: (
Solução
O que está acontecendo em seu código é que a ligação está tratando "EditVenueCommand" como uma propriedade que deve encontrar na datacontext do modelo de dados.
Você realmente não deve usar uma ligação para ligar um comando de qualquer maneira, é só usar especificar a + tipo de campo comando namespace + assim:
Command="myns:MyType.EditVenueCommand"
Onde myns é mapeado para o namespace CLR. Por exemplo:
<Window xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssemblyName" ...