Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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éthodeNotifyCanExecuteChangedpour déclencher l’événementCanExecuteChanged. - Ils exposent des constructeurs prenant des délégués tels que
ActionetFunc<T>, ce qui permet d’encapsuler des méthodes standard et des 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>
Le Button est lié à ICommand du viewmodel, qui encapsule la méthode privée IncrementCounter.
TextBlock affiche la valeur de la propriété Counter et est mis à jour chaque fois que la valeur de la propriété change.
Exemples
- Découvrez l’application d’exemple (pour plusieurs frameworks d’interface utilisateur) pour voir le Kit d’outils MVVM en action.
- Vous trouverez également d’autres exemples dans les tests unitaires.