agosto 2009 Blog Posts
Tempo fa avevo descritto come è possibile propagare le eccezioni da un servizio WCF verso un applicazione Silverlight3. Del procedimento, la parte più noiosa era sicuramente quella necessaria al cambio di HTTP Status Code da 500 a 200, la buona notizia è che grazie alla nuovo Client HTTP Stack presente in Silverlight3 tale cambio non è più necessario, basta infatti aggiungere questa riga allo startup dell’applicazione Silverlight: 1: bool registerResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
Per sostituire il browser networking stack usato by default col nuovo Client Networking...
Parlando di M-V-VM ho notato che, appena appresi i concetti base, la prima domanda che scaturisce è: “Ok, ma come faccio a far comunicare tra loro i diversi ViewModels?”. Vediamo di realizzare un semplice esempio basato sul M-V-VM Light toolkit che mostra una finestra con una lista di prodotti e un altra finestra contente i dettagli del prodotto selezionato, La struttura dell’applicazione è molto semplice Alla finestra principale...
Oggi installando un po’ di roba dopo avere riformattato per il passaggio alla RTM di Win7 mi sono accorto che ad un certo punto la documentazione di Visual Studio 2008 ha smesso di funzionare nel senso che aprendola non c’era traccia di argomenti e/o indice. Dopo una ricerca in rete con svariate soluzioni ho risolto velocemente recuperando da un backup recente il file nslist.hxl e sostituendo quello corrotto in C:\Users\All Users\Microsoft Help Nel caso dovesse capitarvi ricordatevi di questo post… Technorati Tags: Document Explorer
L’altro giorno stavo chattando con Larent Bugnion riguardo nuove features da aggiungere nel suo progetto M-V-VM light toolkit ed entrambi eravamo concordi nella necessità di aggiungere un behavior che mappasse un generico evento verso un comando esposto dal ViewModel. Questa necessità è ancor più sentita in Silverlight dove il meccanismo di commanding, ICommand a parte, non è presente. Un esempio di possibile attached behavior è quello che segue: 1: public static class EventCommand
2: ...
Una semplice richiesta da parte di un cliente di Managed Designs relativamente ad una applicazione WPF che deve visualizzare degli elementi in posizioni ben precise ed eseguire delle operazioni in base agli items selezionati ha dato origine a questo post, il cui scopo è quello di mostrare come sia fondamentale cambiare il modo di pensare ad una interfaccia WPF/Silverlight rispetto alla vecchia tecnologia Windows Forms.
Il cliente aveva sviluppato l’idea aggiungendo e posizionando dinamicamente gli elementi ad un Canvas per poi rendersi conto durante lo sviluppo che la soluzione utilizzata portava ad un vicolo cieco.
La soluzione che abbiamo proposto...
In un architettura basata su Model-View-ViewModel (MVVM) spesso è necessario ‘iniettare’ nel ViewModel delle entities di supporto al ViewModel stesso, ad esempio, in un ottica ViewModel-First è consuetudine passare nel costruttore una generica IView in modo che il ViewModel possa poi comunicare facilmente con la view stessa. L’utilizzo di un interfaccia fa si che questo approccio non comprometta la testabilità del ViewModel in quanto l’interfaccia è facilmente ‘mockabile’ ma Il fatto di avere un ViewModel che non ha un costruttore pubblico senza parametri compromette un altro aspetto al quale è difficile rinunciare: Il supporto a design...
Ho letto parecchi blog/post che chiedevano come gestire nel migliore dei modi la navigazione in Silverlight3 usando Model-View-ViewModel. Inizialmente sono rimasto un po’ disorientato in quanto abituato ad usare il metodo Navigate esposto da NavigationService e questo in qualche modo implicava la conoscenza di quest’ultimo nel Viewmodel oppure il comunicare via EventAggregator/Mediator/ServiceLocator la richiesta di navigazione verso la View. In realtà ho verificato che la soluzione, almeno quella relativa alla sola navigazione, è molto più semplice e consiste nel fare esporre al ViewModel la pagina da navigare e bindarla alla proprietà Source dell’...
Che l’implementazione di INotifyPropertyChanged porti a scrivere del codice non propriamente ‘bello’ e funzionale è ormai scontato, personalmente non è mai stato un problema, bisogna però avere l’accortezza (e questo non sempre avviene) di rinominare il nome della funzione passato nell’evento quando si fa refactoring: soluzione decisamente molto “Code Smelling”. 1: public class MyClass:INotifyPropertyChanged
2: {
3: string userName;
4:
...