ICommand Interface
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Defines the contract for commanding.
Assembly: System (in System.dll)
XMLNS for XAML: Not mapped to an xmlns.
The ICommand type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | 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. |
| Name | Description | |
|---|---|---|
![]() | CanExecuteChanged | Occurs when changes occur that affect whether the command should execute. |
The ICommand interface enables the abstraction of a parameterized method call through its Execute method. In addition, you determine whether a method can be called prior to calling it with the CanExecute method.
Typically objects implement this interface to enable method calls on the objects through the use of XAML bindings. This is particularly useful in Model-View-ViewModel (MVVM) scenarios, as it allows models to expose commands to which controls such as buttons can be bound to without requiring additional code.
Windows Phone implements a limited commanding surface area, rather than an entire commanding. The classes that support command-initiated user interaction are the following:
You can bind the Command property of these objects and their derived classes to instances of objects that implement ICommand. In addition, the ICommand interface exists for compatibility, which is helpful if control authors migrate WPF code-defined or particularly markup-defined command bindings for a Windows Phone implementation.

