Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A RelayCommand és a RelayCommand<T> olyan ICommand-implementációk, amelyek egy metódust vagy delegáltat tehetnek elérhetővé a nézet számára. Ezek a típusok a nézetmodell és a felhasználói felület elemei közötti parancsok kötésére szolgálnak.
Platform API-k:
RelayCommand,RelayCommand<T>,IRelayCommand,IRelayCommand<T>
Hogyan működnek?
RelayCommand és RelayCommand<T> a következő fő funkciókkal rendelkezik:
- Ezek a
ICommandinterfész alapmegvalósítását nyújtják. - Emellett implementálják a
IRelayCommand(ésIRelayCommand<T>) felületet is, amely egy metódustNotifyCanExecuteChangedtesz elérhetővé azCanExecuteChangedesemény létrehozásához. - Olyan konstruktorokat tesznek elérhetővé, amelyek olyan delegáltakat használnak, mint
ActionésFunc<T>amelyek lehetővé teszik a szabványos metódusok és lambdakifejezések burkolását.
Munka a következővel: ICommand
Az alábbiakban egy egyszerű parancs beállítását mutatjuk be:
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++;
}
A relatív felhasználói felület pedig lehet (WinUI XAML használatával):
<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>
A Button a viewmodellben lévő ICommand elemhez van kötve, amely becsomagolja a privát IncrementCounter metódust. A TextBlock tulajdonság értékét Counter jeleníti meg, és minden alkalommal frissül, amikor a tulajdonság értéke megváltozik.
Examples
- Tekintse meg a mintaalkalmazást (több felhasználói felületi keretrendszer esetén) az MVVM-eszközkészlet működés közbeni megtekintéséhez.
- Az egységtesztekben további példákat is találhat.