Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
RelayCommand och RelayCommand<T> är ICommand-implementationer som kan exponera en metod eller en delegat för vyn. Dessa typer fungerar som ett sätt att binda kommandon mellan elementen viewmodel och UI.
Plattforms-API:er:
RelayCommand,RelayCommand<T>,IRelayCommand,IRelayCommand<T>
Så här fungerar de
RelayCommand och RelayCommand<T> har följande huvudfunktioner:
- De tillhandahåller en basimplementering av
ICommandgränssnittet. - De implementerar också gränssnittet
IRelayCommand(ochIRelayCommand<T>), som exponerar enNotifyCanExecuteChanged-metod för att utlösa händelsenCanExecuteChanged. - De tillhandahåller konstruktorer som tar delegater som
ActionochFunc<T>, vilket gör det möjligt att kapsla in vanliga metoder och lambda-uttryck.
Arbeta med ICommand
Följande visar hur du konfigurerar ett enkelt kommando:
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++;
}
Och det relativa användargränssnittet kan då vara (med WinUI XAML):
<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 är bunden till ICommand i vymodellen, som omger den privata metoden IncrementCounter.
TextBlock Visar värdet för Counter egenskapen och uppdateras varje gång egenskapsvärdet ändras.
Exempel
- Kolla in exempelappen (för flera gränssnittsramverk) för att se MVVM Toolkit i praktiken.
- Du kan också hitta fler exempel i enhetstesterna.
MVVM Toolkit