The DelegateCommand command (or RelayCommand, which is almost the same but accepts a parameter) is just a lightweight implementation of the ICommand interface that allows the ViewModel to easily output commands.
Attached behavior is a way to associate an event with a team. For example, most WPF controls do not have the Command property, so you usually cannot define a command to respond to their events. With attached behavior, you can "bind" any event of any control to the command of your ViewModel. Check out the performance of Marlon Grech , which seems to me the most flexible