alessandro melchiori
() => melkio.OnStage();

Alessandro Melchiori

Il processo di bootstrapping di un'applicazione WPF con Radical

23 Nov 2012

In questo post vedremo, alla stessa stregua di quanto fatto in un post precedente, il dettaglio delle operazioni da eseguire per avere un’applicazione WPF up-and-running sfruttando Radical come toolkit di supporto.

Per prima cosa installiamo, tramite nuget, tutti i packages necessari al corretto funzionamento del toolkit. Il root-package è Radical.Windows.Presentation.CastleWindsor

A differenza di Caliburn.Micro, il “dependencies-tree” è assolutamente più corposo. Radical fin dall’inizio introduce il concetto di IoC container, fornendo un’implementazione out-of-the-box basata su Castle.Windsor. Il partizionamento dei progetti e delle dipendenze però sembra (e verificheremo nei prossimi post che è effettivamente così) ben fatta, garantendo potenzialmente un alto grado di customizzabilità.

Radical, così come abbiamo già visto per Caliburn.Micro, basa il suo funzionamento di default su un motore di convenzioni che dovrebbe garantire una curva di setup dell’applicazione molto bassa, se sfruttato nella sua configurazione standard. Anche per Radical la coppia view+viewmodel è la base di partenza, con il pattern che abbiamo visto essere valido anche per Caliburn.Micro. Per fare in modo però che i componenti in gioco (view e viewmodel) siano correttamente registrati all’interno del container, devono appartenere ad un namespace che soddisfa il seguente pattern : “*.Presentation”. Per soddisfare questo requisito, basta creare una folder “Presentation” all’interno del progetto che funga da aggregatore per View e ViewModel, come mostrato nell’immagine seguente:

Fatto questo, basta attivare il bootstrapper, nel code behind dell’applicazione, come mostra lo snippet seguente:


Quello che fa, dietro le quinte, il toolkit è quello di creare l’entry point dell’applicazione (la view indicata nel tipo generico), creare il relativo viewmodel, e agganciare quest’ultimo al DataContext della view stessa in modo da avere la garanzia che tutto sia correttamente setuppato prima dell’avvio dell’applicazione.

Pochi istanti e, anche con Radical, l’applicazione è “runnabile”.

Comments