I'm confused about command pattern. There are so many different explanations about the commands. I thought the code below was delegatecommand, but after reading about the relaycommand, I am in doubt.
What is the difference between relaycommand, delegatecommand and routedcommand. Is it possible to show in examples that have relevance to my posted code?
class FindProductCommand : ICommand
{
    ProductViewModel _avm;
    public FindProductCommand(ProductViewModel avm)
    {
        _avm = avm;
    }
    public bool CanExecute(object parameter)
    {
        return _avm.CanFindProduct();
    }
    public void Execute(object parameter)
    {
        _avm.FindProduct();
    }
    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }
}