Technology Experience
Senza categoria

Pattern M-V-VM e facce della mamma

Per scrivere questo post ho bisogno di un piccolo preambolo tecnico.

Sto sviluppando un’applicazione Silverlight 4, facente uso dei RIA Services per l’accesso ai dati. Un po’ perchè sono nuovo di Silverlight, un po’ perchè comunque perchè non si finisce mai di imparare, questa mattina mi sono ritrovato a dover affrontare una nuova problematica che non sapevo bene come gestire.

La prima cosa che faccio in questi casi è partire da zero, se possibile: creo una nuova applicazione per isolare e studiare il problema a parte, poi lo isolo e pian piano lo caccio dentro (termine tecnico) l’applicazione vera che sto sviluppando. Così ho fatto questa mattina.

Quindi, nuova applicazione Silverlight 4, creo una classe BaseViewModel con il minimo indispensabile, poi un MainViewModel che eredita e via dicendo. Disegno quello che devo disegnare, imposto il DataContext, un po’ di TextBlock bindate a proprietà del ViewModel, ed un bel Button bindato ad una proprietà di tipo RelayCommand. Avvio il progetto, vedo i dati nella ListBox, quando seleziono un oggetto si popolano tutte le TextBlock.

Poi clicco sul pulsante e…boom…non succede nulla. Clicco e ri-clicco e non succede nulla. Controllo di qua e controllo di là: il pulsante non sembra scatenare l’execute del comando. E’ così che – tra le altre cose – arrivo all’ora di pranzo.

Scendo per pranzo verso le 12:30, pensieroso e con la faccia scura perchè – nonostante abbia di fronte un piatto di penne al ragù – continuo a pensare al problema. “Cavolo, l’ho già fatto un centinaio di volte ormai, perchè quel pulsante non va?”.

Ed è qui dove arriva la mamma che quando mi sente silenzioso e mi vede preoccupato, capisce subito che c’è qualcosa che non va. E cerco di spiegarle che non è nulla di serio, è solo un bottone che non ne vuol sapere di fare il suo sporco lavoro. E mentre mangio continuo a pensarci.

Mumble mumble.

Finito il pranzo, torno su e rimetto mano al codice. E con lo stomaco pieno si ragiona sempre meglio, ed ecco infatti che arriva la soluzione: vero che il bottone era correttamente bindato ad una proprietà di tipo RelayCommand del ViewModel, peccato però che la classe RelayCommand non stesse ereditando da ICommand, e quindi di fatto non c’era un vero comando associato al bottone.

Finale.

Ore 16:00 : sale mia madre in mansarda ad annaffiare la pianta grassa che c’è vicino al mio monitor e – premurosa – mi chiede: “Come va? Hai risolto quel problema?” E io bello tranquillo: “Sì sì, certo, il fatto è che il bottone ereditava giusto il DataContext dallo UserControl, la proprietà Command era bindata giusta, ma mi ero dimenticato di mettere nel codice il fatto che classe RelayCommand deve ereditare da ICommand.”, come stessi parlando con Omar o con un collega!

Insomma, avreste dovuto vedere che faccia ha fatto, manco avessi parlato aramaico antico!!!

Mamma, ti voglio bene!

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.