Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
e RelayCommand RelayCommand<T> sono ICommand implementazioni che possono esporre un metodo o un delegato alla visualizzazione. Questi tipi fungono da modo per associare i comandi tra il modello di visualizzazione e gli elementi dell'interfaccia utente.
API della piattaforma:
RelayCommand,RelayCommand<T>,IRelayCommand,IRelayCommand<T>
Come funzionano
RelayCommand e RelayCommand<T> hanno le funzionalità principali seguenti:
- Forniscono un'implementazione di base dell'interfaccia
ICommand. - Implementano anche l'interfaccia
IRelayCommand(eIRelayCommand<T>) che espone unNotifyCanExecuteChangedmetodo per generare l'eventoCanExecuteChanged. - Espongono costruttori che accettano delegati come
ActioneFunc<T>, che consentono il wrapping di metodi standard ed espressioni lambda.
Uso di ICommand
Di seguito viene illustrato come configurare un comando semplice:
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++;
}
E l'interfaccia utente relativa potrebbe quindi essere (usando XAML WinUI):
<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>
L'oggetto Button viene associato all'oggetto ICommand nel modello di visualizzazione, che esegue il wrapping del metodo privato IncrementCounter . TextBlock Visualizza il valore della Counter proprietà e viene aggiornato ogni volta che il valore della proprietà cambia.
Esempi
- Vedere l'app di esempio (per più framework dell'interfaccia utente) per vedere MVVM Toolkit in azione.
- È anche possibile trovare altri esempi negli unit test.