Radical – A new day has come <cit.>

Questo è il primo di alcuni articoli che tratteranno l’utilizzo del framework Radical, sviluppato da Mauro Servienti.

Qualche premessa:

  1. molto di quello che trovate qui lo potete trovare anche sulla documentazione di Radical che Mauro sta scrivendo, in inglese, impegni lavorativi permettendo;
  2. lo scopo di questi post è presentarvi alcune facilities che questo framework mette a disposizione, in italiano! Occhiolino;
  3. io ho sempre trovato poco intuitivo l’utilizzo del toolkit MVVM Light Toolkit;
  4. non mi piace molto l’utilizzo che fa Caliburn.Micro della proprietà Name dei controlli per il binding (mi hanno sempre detto: “in MVVM usare Name è MALE!” A bocca aperta), ma ammetto che è questione di gusti;
  5. trovavo noioso e “error-prone” dover scrivere centinaia di righe di codice solo per gestire in maniera “decente” l’iterazione con l’utente.

Da queste poche righe, capite che fino a poco tempo fa il mio rapporto con MVVM e il databinding era molto problematico e  alla fine ricadevo sempre sulle care e vecchie Windows Forms che almeno mi consentivano un miglior controllo sull’iterazione con la UI.

In tutti i progetti di esempio, infatti, vengono dimostrati i vantaggi del data binding facendo vedere come, con due righe di codice, puoi recuperare i dati e visualizzarli, ma non fanno vedere che, una volta applicato il pattern MVVM, ci si scontra con molti altri problemi che non avevamo con le vecchie WinForms, ad esempio: la gestione delle finestre di dialogo dal ViewModel, il passaggio di parametri tra View (o ViewModel), fino ad arrivare al problema di dover gestire il data binding con controlli che non lo prevedono (PasswordBox) Perplesso

Radical ha una risposta a tutti questi problemi ed a molti altri e vi semplificherà la vita e diminuendo del 50% il codice che state scrivendo se usate MVVM Light Toolkit (esperienza diretta su un mio progetto).

Partiamo da una guida in 8 passi per creare un progetto funzionate (in C#):

  1. Create una nuova applicazione WPF;
  2. Aggiungete, attraverso Nuget, un riferimento a  Radical.Windows.Presentation.CastleWindsor (ma se preferite o il vostro progetto usa già un altro IoC container sono supportati anche Unity2, Unity3, Autofac e Puzzle per le app RT). Nota: se non trovate il riferimento giusto dovete solo selezionare “Include Prelerase” nella ricerca dei pacchetti Nuget;
  3. Cancellate la Window creata di default da Visual Studio (MainWindow.xaml);
  4. Modificate il file "app.xaml" rimuovendo l'attributo "StartupUri"
  5. Aggiungete un folder “Presentation” al progetto (è il folder dove Radical cerca di default le View e i ViewModel);
  6. Create una nuova window chiamandola “MainView.xaml” (di default Radical considera Views le windows il cui nome finisce per “View”);
  7. Create una nuova classe chiamandola “MainViewModel.cs” (di default Radical considera ViewModels le classi il cui nome finisce per “ViewModel” e le lega alla View che ha la stessa radice);

Andate nel file “app.xaml.cs” e aggiungete una singola riga di codice (ovviamente cambiando la dichiarazione del bootstrapper a seconda dell’IoC container scelto):

    public partial class App : Application
    {
        public App()
        {
            var bootstrapper = new WindsorApplicationBootstrapper<MainView>();
        }
    }

Premete F5 e tutto funzionerà, ossia si apre una Window vuota! A bocca aperta

Come avrete capito anche Radical si basa sul paradigma Convention Over Configuration e dietro le quinte ha:

  1. Legato la View e il ViewModel senza dover aggiungere alcunché;
  2. Fatto partire la View da noi scelta (in questo caso la “MainView”);
  3. Reso la MainView singleton (per convenzione se la View inizia per “Main” o “Shell” allora è singleton);
  4. Abilitato molte altre cose che in progetto vuoto come questo non è possibile farvi vedere Occhiolino
  5. Ovviamente tutte queste convenzioni possono essere “overridate” all’occorrenza Caldo

Ora abbiamo una Window vuota che dalla prossima volta vedremo di riempire con qualche controllo e un po’ di logica in modo da esplorare le altre potenzialità di questo framework.

Tag di Technorati: ,

posted @ Wednesday, July 3, 2013 10:12 PM

Print

Comments on this entry:

# re: Radical – A new day has come <cit.>

Left by Moreno at 1/31/2017 9:25 AM
Gravatar
Mi chiamo Moreno, 63 anni pensionato e ancora e per sempre innamorato della programmazione.
Mi interessa moltissmo e, ho anche operativamente, la necessità di creare degli User control per un'applicazione che sto scrivendo (WPF C#) per la parrocchia. Ho letto con molto interesse i tuoi primi spunti su Radical.
Puoi aiutarmi a capirne di più e a permettermi di realizzare un paio di user control fondamentali per la realizzazione del progetto ?
Grazie
Moreno
Comments have been closed on this topic.
«June»
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456