Applicazioni moderne si basano spesso sul pattern MVVM per il layer di presentazione. Nonostante questo pattern sia conosciuto ormai dalla nascita di WPF, ancora oggi i controlli non offrono un supporto ottimale e necessitano di un po' di lavoro.
Ad esempio nel caso del controllo ListView non è possibile associare un Command da eseguire alla pressione di un elemento: per far questo possiamo usare i Behavior.
In particolare, ci torna utile il Behavior InvokeCommandAction, che permette di associare ad un qualsiasi evento un comando da eseguire. Possiamo convertire gli argomenti dell'evento in qualcosa di utilizzabile per i ViewModel, sfruttando un converter e impostando la proprietà InputConverter esposta dalla classe InvokeCommandAction.
public class ListItemEventArgsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var args = value as ItemClickEventArgs;
if (args != null)
{
return args.ClickedItem;
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}Il codice è semplicissimo: il converter recupera l'elemento su cui l'utente ha premuto, attraverso l'oggetto ItemClickEventArgs e, successivamente, viene passato al metodo richiamato dal command.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare memory leaks nelle closure JavaScript
Integrare un servizio esterno con .NET Aspire
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Recuperare le subissue e il loro stato di completamento in GitHub
Creare una libreria CSS universale - Rotazione degli elementi
Controllare la velocità di spostamento su una pagina HTML
Il nuovo controllo Range di Blazor 9
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Gestire progetti .NET + React in .NET Aspire
Utilizzare una qualunque lista per i parametri di tipo params in C#
Esporre un server MCP con Azure API Management
Utilizzare Intersect e Except per filtrare set di dati in TSql
I più letti di oggi
- Usare Bootstrap con ASP.NET MVC 4
- Rimuovere dalla cache una pagina in OutputCache
- Il SP2 di Windows Vista e Windows Server 2008 arriva alla RC
- Rilasciata patch di sicurezza per la vulnerabilità sulla crittografia di ASP.NET
- jQuery raggiunge la versione 1.7
- Real World ASP.NET Best Practices
- Transact-SQL Programmazione avanzata
- Tra i 1000 siti più visitati è IIS il più usato
- Le differenze di VS 2005 Express, Professional e Team System
- .NET Framework 2.0 Code Coverage Edition per la compatibilità con la 1.x


