Команда в WPFToolkit DataGridTemplateColumn не работает
-
05-07-2019 - |
Вопрос
я использую DataGrid WPFToolkit и пытаюсь заставить работать кнопку редактирования, вот столбец:
<my:DataGridTemplateColumn>
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding EditVenueCommand}" >Edit</Hyperlink>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
и я получаю следующую ошибку:
Ошибка пути BindingExpression: свойство 'EditVenueCommand' не найдено в 'объекте' '' Место проведения '(HashCode = 18626439)'. BindingExpression: Path = EditVenueCommand; DataItem = 'Место проведения' (HashCode = 18626439); целевой элемент - «Гиперссылка» (HashCode = 32883419); Свойство target - «Command» (тип «ICommand»)
EditVenueCommand прекрасно срабатывает, когда находится вне сетки.
Кроме того, причина, по которой я использую DataGridTemplateColumn вместо DataGridHyperlinkColumn, заключается в том, что я не могу заставить это работать либо: (
Решение
В вашем коде происходит следующее: привязка обрабатывает " EditVenueCommand " как свойство, которое оно должно найти в текстовом тексте шаблона данных.
Вы действительно не должны использовать Binding для подключения команды в любом случае, просто используйте указание поля namespace + type + command следующим образом:
Command="myns:MyType.EditVenueCommand"
Где myns отображается в ваше пространство имен CLR. Например:
<Window xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssemblyName" ...