У меня есть пользовательский элемент управления WPF, содержащий telerik RadGridView. Контекст данных элемента управления устанавливается на экземпляр класса MyViewModel. Класс MyViewModel имеет свойство myRecords типа ObservableCollection. RadGridView связан таким образом:
ItemsSource="{Binding myRecords}"
В RadGridView я определяю ряд столбцов, которые содержат шаблоны данных, которые привязываются к свойствам MyRecords. Это работает нормально.
Я добавил столбец, содержащий кнопку удаления. Или, скорее, содержит DataTemplate, который содержит кнопку с надписью «удалить». Это связано с командой, определенной в записи:
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<Button
Command="{Binding deleteCommand}"
CommandParameter="{Binding}">
<Label>Delete</Label>
</Button>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
И это отлично работает. Свойство ICommand, которое я определил в MyRecord, выполняется.
Но вот в чем дело - я не хочу, чтобы этот код. Я не хочу запускать метод в MyRecord, я хочу запустить метод в MyViewModel, передавая соответствующий MyRecord в качестве аргумента. Элемент CommandParameter = "{Binding}" выше передает соответствующий MyRecord, так что с этой частью все в порядке. Но я не смог выяснить, как связать команду кнопки с ICommand объекта MyViewModel вместо MyRecord.
Я играл с RelativeSource и AncestorType и ничего не получил.
Помощь будет оценена.