Udostępnij za pośrednictwem


RelayCommand i RelayCommand<T>

RelayCommand<T> I RelayCommand to ICommand implementacje, które mogą uwidaczniać metodę lub delegować do 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ą IRelayCommand również interfejs (i IRelayCommand<T>), który uwidacznia metodę NotifyCanExecuteChanged w celu wywołania CanExecuteChanged zdarzenia.
  • Uwidaczniają konstruktorów biorących delegatów, takich jak Action i Func<T>, które umożliwiają zawijanie 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++;
}

Względny interfejs użytkownika może być (przy użyciu języka 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>

Powiązanie Button z elementem ICommand w modelu viewmodel, który opakowuje metodę prywatną 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.