Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bei RelayCommand und RelayCommand<T> handelt es sich um ICommand-Implementierungen, die eine Methode oder einen Delegaten für die Ansicht bereitstellen können. Diese Typen dienen dazu, Befehle zwischen dem ViewModel und Benutzeroberflächenelementen zu binden.
Plattform-APIs:
RelayCommand,RelayCommand<T>,IRelayCommand,IRelayCommand<T>
Funktionsweise
RelayCommand und RelayCommand<T> haben die folgenden Hauptfunktionen:
- Sie bieten eine Basisimplementierung der
ICommand-Schnittstelle. - Sie implementieren auch die Schnittstelle
IRelayCommand(undIRelayCommand<T>), die eineNotifyCanExecuteChanged-Methode bereitstellt, um dasCanExecuteChanged-Ereignis auszulösen. - Sie stellen Konstruktoren zur Verfügung, die Delegaten wie
ActionundFunc<T>annehmen, die das Umbrechen von Standardmethoden und Lambdaausdrücken ermöglichen.
Funktioniert mit ICommand
Im Folgenden wird gezeigt, wie Sie einen einfachen Befehl einrichten:
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++;
}
Und die relative Benutzeroberfläche könnte dann sein (mit WinUI XAML):
<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 ist im ViewModel an ICommand gebunden, das die private IncrementCounter-Methode Umschließt. TextBlock zeigt den Wert der Counter-Eigenschaft an und wird jedes Mal aktualisiert, wenn sich der Wert der Eigenschaft ändert.
Beispiele
- Sehen Sie sich die Beispiel-App (für mehrere Benutzeroberflächen-Frameworks) an, um das MVVM-Toolkit in Aktion zu sehen.
- Weitere Beispiele finden Sie auch in den Komponententests.