Quando utilizziamo Caliburn Micro come framework per implementare il MVVM, molti degli eventi esposti dai controlli presenti nella View sono automaticamente associati ai metodi del ViewModel, mediante delle semplici naming convention.
I framework di presentazione sono in continua evoluzione, quindi è necessario un meccanismo flessibile per associare gli eventi ai metodi.
In Caliburn Micro è possibile usare l'Attached Property Message.Attach.
cal:Message.Attach="[Event NomeEvento] = [Action NomeMetodo($parametro)]"
La sintassi è semplice e l'unica particolarità è nella gestione del parametro speciale preceduto dal simbolo del dollaro.
Per evitare di utilizzare classi di presentazione all'interno del ViewModel, è possibile veicolare l'oggetto incapsulato dall'evento impostando il MessageBinder.
MessageBinder.SpecialValues.Add("$parametro", contex => { if (contex == null || contex.EventArgs == null) return 0; else { var args = contex.EventArgs as Tipo Evento; //logica per l'elaborazione dei dai dati all'interno della classe EventArgs return ...; } });
Tramite il MessangeBinder è possibile gestire gli argomenti passati dall'evento e restituirli dal ViewModel "depurato" dalle dipendenze del framework di presentazione.
In questo modo, ad esempio, possiamo avere un indice di una selezione come un semplice intero e non un oggetto come il ListBoxItem.
Il MessangeBinder va impostato in fase di configurazione dell'IOC container, prima o dopo la registrazione dei ViewModel.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Eseguire le GitHub Actions offline
Generare token per autenicarsi sulle API di GitHub
Miglioramenti nell'accessibilità con Angular CDK
Code scanning e advanced security con Azure DevOps
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Creare un webhook in Azure DevOps
Ordinare randomicamente una lista in C#
Creare un'applicazione React e configurare Tailwind CSS
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Eseguire query manipolando liste di tipi semplici con Entity Framework Core