Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
RelayCommand i RelayCommand<T> są implementacjami ICommand, które mogą udostępniać metodę lub delegata dla widoku. Te typy działają jako sposób powiązania poleceń między modelem widoku i elementami interfejsu użytkownika.
Interfejsy API platformy:
RelayCommand,RelayCommand<T>, ,IRelayCommandIRelayCommand<T>
Jak działają
RelayCommand i RelayCommand<T> mają następujące główne funkcje:
- Zapewniają podstawową implementację interfejsu
ICommand. - Implementują również interfejs
IRelayCommand(orazIRelayCommand<T>), który udostępnia metodęNotifyCanExecuteChangedumożliwiającą zgłoszenie zdarzeniaCanExecuteChanged. - Udostępniają konstruktory przyjmujące delegaty, takie jak
ActioniFunc<T>, które umożliwiają opakowywanie standardowych metod i wyrażeń lambda.
Praca z ICommand
Poniżej przedstawiono sposób konfigurowania prostego polecenia:
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++;
}
A odpowiedni interfejs użytkownika mógłby wyglądać następująco (w języku 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>
Element Button jest powiązany z właściwością ICommand w modelu widoku, która opakowuje prywatną metodę IncrementCounter. Obiekt TextBlock wyświetla wartość Counter właściwości i jest aktualizowany za każdym razem, gdy wartość właściwości się zmienia.
Przykłady
- Zapoznaj się z przykładową aplikacją (dla wielu struktur interfejsu użytkownika), aby zobaczyć, jak działa zestaw narzędzi MVVM Toolkit.
- Więcej przykładów można również znaleźć w testach jednostkowych.