Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
ICommandtemel bir uygulamasını sağlar. - Ayrıca olayı tetikleyen bir
NotifyCanExecuteChangedyöntemi kullanıma sunan (veIRelayCommand<T>) arabiriminiCanExecuteChangedde uygularlarIRelayCommand. - 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 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