RelayCommand et RelayCommand<T>
RelayCommand
et RelayCommand<T>
sont des implémentations ICommand
qui peuvent exposer une méthode ou déléguer à l’affichage. Ces types agissent comme un moyen de lier des commandes entre les éléments viewmodel et d’interface utilisateur.
APIs de plateforme :
RelayCommand
,RelayCommand<T>
,IRelayCommand
,IRelayCommand<T>
Fonctionnement
Les types RelayCommand
et RelayCommand<T>
incluent les principales fonctionnalités suivantes :
- Ils fournissent une implémentation de base de l’interface
ICommand
. - Ils implémentent également l’interface
IRelayCommand
(etIRelayCommand<T>
), qui expose une méthodeNotifyCanExecuteChanged
pour déclencher l’événementCanExecuteChanged
. - Ils exposent des constructeurs prenant des délégués tels que
Action
etFunc<T>
, ce qui permet l’habillage de méthodes standard et d’expressions lambda.
Utilisation de ICommand
Voici comment configurer une commande simple :
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++;
}
Et l’interface utilisateur relative peut ensuite être (à l’aide de XAML 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>
Button
lie au ICommand
dans le viewmodel, qui encapsule la méthode IncrementCounter
privée. TextBlock
affiche la valeur de la propriété Counter
et est mis à jour chaque fois que la valeur de la propriété change.
Exemples
- Consultez l’exemple d’application (pour plusieurs infrastructures d’interface utilisateur) afin de voir le Kit d’outils Modèle-vue-vue modèle (MVVM) en action.
- Vous trouverez également d’autres exemples dans les tests unitaires.