Сообщение об ошибке самоочевидно: у вас RelayCommand<DependencyObject>
вы ожидали параметр команды как DependencyObject
, но у вас есть MouseButtonEventArgs
, что нормально, потому что вы подписались на MouseDown
событие.
EventToCommand
при возникновении события выполняет команду с одним из следующих параметров:
- Если значение
CommandParameter
равно НЕ null
, оно использует его в качестве параметра, поэтому команда должна выглядеть следующим образом: RelayCommand<typeOfTheSpecifiedCommandPameter>
- Если
PassEventArgsToCommand='true'
и , то значение
CommandParameter
is null
он использует eventargs в качестве команды
параметр. Таким образом, вы должны определить свою команду как
RelayCommand<MouseButtonEventArgs>
.
- Если
PassEventArgsToCommand='false'
и , CommandParameter
равен null
, он не выполняет команду вообще.
Примечание:
Так что вам нужно по-разному определять вашу команду для двух случаев. При необходимости вы должны использовать RelayCommand<object>
и проверить тип параметра. Вот почему я считаю плохой практикой одновременно использовать PassEventArgsToCommand
и CommandParameter
.
Вернуться к исключению:
В вашем случае он показывает CommandParameter="{Binding Videos}"
, возвращает ноль, поэтому вы получаете MouseButtonEventArgs
в качестве параметра команды.
Чтобы выяснить, почему {Binding Videos}
является нулем, вы можете проверить окно вывода в VS во время выполнения на наличие ошибок привязки.