DelegateCommand

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 
    { 
        get 
        { 
            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

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

See Also

In this article