Вопрос

я использую 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" ...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top