You definitely should do more reading. But to get you started...
You don't want your VM to implement ICommand. Commands are separate objects exposed by your VM. To avoid creating a class for each command a common implementation named DelegateCommand or RelayCommand is used. You can implement one yourself or use one which comes with a MVVM framework (e.g. Prism,
some more links here). As the name suggest the command will relay the call to a delegate you provide in the constructor. Here is how it works:
class LoginViewModel
{
ICommand MyCommand { get; private set; }
public LoginViewModel()
{
MyCommand = new DelegateCommand(MyMethod);
}
private void MyMethod(object parameter)
{
}
}