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
Hosting di componenti WebAssembly in un'applicazione Blazor static
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Gestione dei nomi con le regole @layer in CSS
Generare un hash con SHA-3 in .NET
Utilizzare i primary constructor di C# per inizializzare le proprietà
Routing statico e PreRendering in una Blazor Web App
Creare una libreria CSS universale - Rotazione degli elementi
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Miglioramenti nelle performance di Angular 16
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
I più letti di oggi
- La navigazione tra le pagine in Windows Phone 8.1
- Salvare in maniera sicura dati sensibili nelle Universal App con il Credential Locker
- Canary deployment con le pipeline YAML di Azure DevOps
- Registrare un applicazione per gestire l'auto upload in Windows Phone 8
- Tool per amministrare blob, queue e table di Windows Azure
- Creare un feed NuGet privato
- Avviare la mappa in modalità navigazione in Windows Phone 8
- Utilizzare Bootstrap per mostrare dei popup accanto a un controllo
- Building modern web apps with Blazor
- Adattare l'UI a risoluzioni differenti in Windows Phone 8.1