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 ve RelayCommand<T>, görünüme bir yöntem veya temsilci sunabilen ICommand uygulamalarıdır. 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:
-
ICommandarabiriminin temel bir uygulamasını sağlarlar. - Ayrıca,
CanExecuteChangedolayını tetiklemek içinNotifyCanExecuteChangedyöntemini kullanıma sunanIRelayCommand(veIRelayCommand<T>) arabirimini de uygularlar. -
ActionveFunc<T>gibi temsilcileri parametre olarak alan oluşturucular sunarlar; bu sayede standart yöntemler ve lambda ifadeleri sarmalanabilir.
ICommand ile çalışma
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++;
}
İlgili kullanıcı arabirimi de WinUI XAML kullanılarak şu şekilde 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öntemini saran görünüm modelindeki ICommand öğesine bağlanır. özelliğin TextBlockCounter 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