Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
RelayCommand y RelayCommand<T> son implementaciones de ICommand que pueden exponer un método o un delegado a la vista. Estos tipos actúan como una manera de enlazar comandos entre el modelo de vista y los elementos de la interfaz de usuario.
API de la plataforma:
RelayCommand,RelayCommand<T>,IRelayCommand,IRelayCommand<T>
Cómo funcionan
RelayCommand y RelayCommand<T> tienen las siguientes características principales:
- Proporcionan una implementación base de la interfaz
ICommand. - También implementan la interfaz
IRelayCommand(yIRelayCommand<T>), que expone un métodoNotifyCanExecuteChangedpara generar el eventoCanExecuteChanged. - Exponen constructores que toman delegados como
ActionyFunc<T>, lo que permite ajustar métodos estándar y expresiones lambda.
Uso de ICommand
A continuación se muestra cómo configurar un comando sencillo:
public class MyViewModel : ObservableObject
{
public MyViewModel()
{
IncrementCounterCommand = new RelayCommand(IncrementCounter);
}
private int counter;
public int Counter
{
get => counter;
private set => SetProperty(ref counter, value);
}
public ICommand IncrementCounterCommand { get; }
private void IncrementCounter() => Counter++;
}
Y la interfaz de usuario relativa podría ser la siguiente (con XAML de WinUI):
<Page
x:Class="MyApp.Views.MyPage"
xmlns:viewModels="using:MyApp.ViewModels">
<Page.DataContext>
<viewModels:MyViewModel x:Name="ViewModel"/>
</Page.DataContext>
<StackPanel Spacing="8">
<TextBlock Text="{x:Bind ViewModel.Counter, Mode=OneWay}"/>
<Button
Content="Click me!"
Command="{x:Bind ViewModel.IncrementCounterCommand}"/>
</StackPanel>
</Page>
El objeto Button enlaza a ICommand en el modelo de vista, que ajusta el método IncrementCounter privado. El objeto TextBlock muestra el valor de la propiedad Counter y se actualiza cada vez que cambia el valor de la propiedad.
Ejemplos
- Consulte la aplicación de ejemplo (para varios marcos de interfaz de usuario) para ver el kit de herramientas de MVVM en acción.
- También puede encontrar más ejemplos en las pruebas unitarias.