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
Ottenere un token di accesso per una GitHub App
Simulare Azure Cosmos DB in locale con Docker
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Code scanning e advanced security con Azure DevOps
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Gestione dell'annidamento delle regole dei layer in CSS
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Utilizzare Azure AI Studio per testare i modelli AI
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Ottimizzazione dei block template in Angular 17
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow