ICommand Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Define el comportamiento del comando de un elemento de interfaz de usuario interactivo que realiza una acción cuando se invoca, como enviar un correo electrónico, eliminar un elemento o enviar un formulario.
public interface class ICommand
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3853464898, 51815, 16513, 153, 91, 112, 157, 209, 55, 146, 223)]
struct ICommand
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(3853464898, 51815, 16513, 153, 91, 112, 157, 209, 55, 146, 223)]
public interface ICommand
Public Interface ICommand
- Derivado
- Atributos
Ejemplos
En este caso, definimos un comando que simplemente retransmite su funcionalidad a otros objetos.
Consulta el ejemplo de conceptos básicos de la interfaz de usuario (XAML) para obtener la aplicación completa.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace AppUIBasics.Common
{
/// <summary>
/// A command whose sole purpose is to relay its functionality
/// to other objects by invoking delegates.
/// The default return value for the CanExecute method is 'true'.
/// RaiseCanExecuteChanged needs to be called whenever
/// CanExecute is expected to return a different value.
/// </summary>
public class RelayCommand : ICommand
{
private readonly Action _execute;
private readonly Func<bool> _canExecute;
/// <summary>
/// Raised when RaiseCanExecuteChanged is called.
/// </summary>
public event EventHandler CanExecuteChanged;
/// <summary>
/// Creates a new command that can always execute.
/// </summary>
/// <param name="execute">The execution logic.</param>
public RelayCommand(Action execute)
: this(execute, null)
{
}
/// <summary>
/// Creates a new command.
/// </summary>
/// <param name="execute">The execution logic.</param>
/// <param name="canExecute">The execution status logic.</param>
public RelayCommand(Action execute, Func<bool> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// Determines whether this RelayCommand can execute in its current state.
/// </summary>
/// <param name="parameter">
/// Data used by the command. If the command does not require data to be passed,
/// this object can be set to null.
/// </param>
/// <returns>true if this command can be executed; otherwise, false.</returns>
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute();
}
/// <summary>
/// Executes the RelayCommand on the current command target.
/// </summary>
/// <param name="parameter">
/// Data used by the command. If the command does not require data to be passed,
/// this object can be set to null.
/// </param>
public void Execute(object parameter)
{
_execute();
}
/// <summary>
/// Method used to raise the CanExecuteChanged event
/// to indicate that the return value of the CanExecute
/// method has changed.
/// </summary>
public void RaiseCanExecuteChanged()
{
var handler = CanExecuteChanged;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
}
}
Comentarios
XamlUICommand implementa esta ICommand interfaz para C++ o System.Windows. Input.ICommand para C# (agregar varias propiedades, métodos y eventos de interfaz de usuario).
Para obtener un ejemplo básico, vea el control Button , que invoca un comando cuando un usuario hace clic en él. Hay dos maneras de administrar la experiencia de comandos:
- Controlar el
Clickevento - Enlace de la
Commandpropiedad a unaICommandimplementación que describe la lógica de comandos
Métodos
| Nombre | Description |
|---|---|
| CanExecute(Object) |
Recupera si el comando se puede ejecutar en su estado actual. |
| Execute(Object) |
Define el método al que se va a llamar cuando se invoca el comando. |
Eventos
| Nombre | Description |
|---|---|
| CanExecuteChanged |
Se produce cada vez que ocurre algo que afecta a si el comando puede ejecutarse. |