Create class named DelegateCommand contains command arguments and Executed Method.
public delegate void DelegateCommandExecutedEventHandler(Object sender,
DelegateCommandExecutedEventArgs e);
public class DelegateCommandExecutedEventArgs : EventArgs
{
public DelegateCommand Command { get; set; }
public Object Parameter { get; set; }
public DelegateCommandExecutedEventArgs(DelegateCommand command, Object parameter)
{
Command = command;
Parameter = parameter;
}
}
public class DelegateCommand : ICommand
{
private Boolean _canExecuteCore;
public Boolean CanExecuteCore
{
get { return _canExecuteCore; }
set { _canExecuteCore = value; OnCanExecuteChanged(); }
}
public event EventHandler CanExecuteChanged;
protected void OnCanExecuteChanged()
{
EventHandler temp = CanExecuteChanged;
if (temp != null)
{
temp(this, EventArgs.Empty);
}
}
public event DelegateCommandExecutedEventHandler Executed;
protected void OnExecuted(DelegateCommand command, Object parameter)
{
DelegateCommandExecutedEventHandler temp = Executed;
if (temp != null)
{
temp(this, new DelegateCommandExecutedEventArgs(command, parameter));
}
}
public DelegateCommand()
{
CanExecuteCore = true;
}
public Boolean CanExecute(object parameter)
{
return CanExecuteCore;
}
public void Execute(object parameter)
{
OnExecuted(this, parameter);
}
}
Now using Command in XAML page
<Button Content="Save"
Command="{Binding SaveCommand}"
CommandParameter="SaveEmployee"
Margin="20,0,0,0"
Height="30"
Grid.Row="1"
Grid.Column="1" />
Execute Command From ViewModel
public class EmployeeViewModel
{
public DelegateCommand SaveCommand { get; set; }
public EmployeeViewModel()
{
SaveCommand = new DelegateCommand();
SaveCommand.Executed += new DelegateCommandExecutedEventHandler(SaveCommand_Executed);
}
void SaveCommand_Executed(object sender, DelegateCommandExecutedEventArgs e)
{
if (e.Parameter == null || string.IsNullOrEmpty(e.Parameter.ToString()))
return;
//......here your code
}
}