Let's first add RelayCommand class: 

class RelayCommand: ICommand
{
	private Action<object> _action;

	public RelayCommand(Action<object> action)
	{
		_action = action;
	}

	public bool CanExecute(object parameter)
	{
		return true;
	}

	public void Execute(object parameter)
	{
		if (parameter != null)
		{
			_action(parameter);
		}
		else
		{
			_action("Hello world");
		}
	}

	public event EventHandler CanExecuteChanged;
}

ICommand is an interface, and automatically you will receive methods which you have to implement. Now "click model":

public class MVVMButtonClickViewModel
{
	public MVVMButtonClickViewModel()
	{
		MVVMClick = new RelayCommand(new Action<object>(ShowMessage));
	}

	private ICommand m_ButtonCommand;

	public ICommand MVVMClick
	{
		get { return m_ButtonCommand; }
		set { m_ButtonCommand = value; }
	}

	public void ShowMessage(object obj)
	{
		MessageBox.Show("Test");
	}

}

and XAML:

<Window x:Class="MVVMButtonClick.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MVVMButtonClick.ViewModel"
        Title="MainWindow" Height="350" Width="525">
    <Window.DataContext>
        <local:MVVMButtonClickViewModel />
    </Window.DataContext>
    <Grid>
        <Button Content="Button" HorizontalAlignment="Left" Margin="247,134,0,0" VerticalAlignment="Top" Width="75" Command="{Binding MVVMClick}"/>
    </Grid>
</Window>

As you can see, in button node, we have attribute like: Command="{Binding MVVMClick}, and of course don't forget to add DataContext, like: 

    <Window.DataContext>
        <local:MVVMButtonClickViewModel />
    </Window.DataContext>

Example you can download from here.