Utilità del comando CanExecute come esiste in WPF

2

Voglio mettere in discussione l'utilità della funzionalità CanExecute in WPF (definita nel ICommand interfaccia). Poiché penso che tu possa ottenere la stessa funzionalità senza questa funzione, mi chiedo perché è lì in primo luogo.

La mia domanda è: Se costruisco una nuova infrastruttura UI come WPF da zero e devo decidere se includere qualcosa di simile a CanExecute, quali sono gli argomenti contro o a favore di una tale caratteristica?

Al momento la mia opinione è che, se si preferisce la semplicità, questa funzione dovrebbe essere esclusa in quanto è possibile ottenere facilmente funzionalità simili con un'ulteriore proprietà del modello di vista che rappresenta se il comando può essere attualmente eseguito. Forse la mia ipotesi è sbagliata e CanExecute è davvero una funzionalità elegante, in questo caso ti chiederei di fornire argomenti convincenti.

    
posta Sjoerd222888 16.09.2015 - 13:49
fonte

1 risposta

6

CanExecute ha un paio di vantaggi rispetto all'aggiunta di una proprietà IsEnabled:

  • Ogni elemento dell'interfaccia utente associato al comando richiede solo 1 associazione invece di 2 (questo è meno lavoro e, cosa più importante, meno soggetto a errori). È comune avere più viste per un modello di vista o avere più elementi dell'interfaccia utente associati a un singolo comando (i menu di scelta rapida sono un ottimo esempio).
  • CommandManager chiamerà automaticamente CanExecute per aggiornare lo stato del pulsante, il che significa che non è necessario tracciare manualmente e generare eventi di modifica delle proprietà per IsEnabled. Questo è particolarmente comodo se CanExecute dipende da più condizioni.

Direi che aggiungere una seconda proprietà per monitorare separatamente CanExecute aumenta la complessità.

Considera anche che altri programmatori che hanno familiarità con MVVM si aspettano il Comando di fornire una funzione CanExecute e saranno sorpresi quando non lo fanno.

    
risposta data 16.09.2015 - 16:16
fonte

Leggi altre domande sui tag