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 (veIRelayCommand<T>
) arabiriminiCanExecuteChanged
de uygularlarIRelayCommand
. - Ve gibi
Action
Func<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 TextBlock
Counter
değerini görüntüler ve özellik değeri her değiştiğinde güncelleştirilir.
Örnekler
- MVVM Araç Seti'ni uygulamada görmek için örnek uygulamaya (birden çok UI çerçevesi için) göz atın.
- Birim testlerinde daha fazla örnek de bulabilirsiniz.
MVVM Toolkit