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>