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) pour voir le kit d’outils MVVM à l’œuvre.
- Vous trouverez également d’autres exemples dans les tests unitaires.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour