New to Telerik UI for WPF? Download free 30-day trial


The DelegateCommand class provides a simple ICommand implementation. It is located in the Telerik.Windows.Controls namespace and exposes the following methods and events:

  • CanExecute: Defines the method that determines whether the command can execute in its current state.
  • Execute: Defines the method to be called when the command is invoked.
  • InvalidateCanExecute: Raises the CanExecuteChanged event.
  • CanExecuteChanged: Raised when changes occur that affect whether the command should execute.

The DelegateCommand constructor has two overloads. The first accepts just a Delegate to execute as a parameter. The second one accepts the Delegate to execute as well as a Predicate that allows/bans the execution.

Example 1: DelegateCommand implementation in your ViewModel that accepts a delegate and a predicate

public class ViewModel 
    public bool CanExecuteCommand 
            return true; 
    public ICommand CustomCommand { get; set; } 
    public ViewModel() 
        this.CustomCommand = new DelegateCommand(onCustomCommandExecuted, canBeExecuted); 
    private bool canBeExecuted(object obj) 
        return this.CanExecuteCommand; 
    private void onCustomCommandExecuted(object obj) 
        MessageBox.Show("Custom Command Executed!"); 

Example 2: Using the command in xaml

        <my:ViewModel /> 
    <Button Command="{Binding CustomCommand}" Content="Execute command" VerticalAlignment="Bottom" /> 

See Also

In this article