Aracılığıyla paylaş


RelayCommand ve RelayCommand<T>

RelayCommand veRelayCommand<T>, bir yöntemi veya görünüm temsilcisini kullanıma sunan uygulamalardırICommand. Bu türler, viewmodel ve UI öğeleri arasında komut bağlamanın bir yolu olarak davranır.

Platform API'leri:RelayCommand, RelayCommand<T>, IRelayCommand, IRelayCommand<T>

Nasıl çalışırlar?

RelayCommand ve RelayCommand<T> aşağıdaki ana özelliklere sahiptir:

  • Bunlar arabiriminin ICommand temel bir uygulamasını sağlar.
  • Ayrıca olayı tetikleyen bir NotifyCanExecuteChanged yöntemi kullanıma sunan (ve IRelayCommand<T>) arabirimini CanExecuteChanged de uygularlar IRelayCommand .
  • Ve gibi ActionFunc<T>temsilciler alan oluşturucuları kullanıma sunar ve bu da standart yöntemlerin ve lambda ifadelerinin sarmalanmalarına olanak sağlar.

Ile çalışma ICommand

Aşağıda basit bir komutun nasıl ayarlanacağı gösterilmektedir:

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++;
}

Göreli kullanıcı arabirimi de (WinUI XAML kullanılarak) olabilir:

<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 özel IncrementCounter yöntemi sarmalayan görünüm modelinde öğesine bağlanırICommand. özelliğin TextBlockCounter değerini görüntüler ve özellik değeri her değiştiğinde güncelleştirilir.

Örnekler