.NET
Oggi molti di voi saranno rientrati dalle ferie, quindi ne approfitto per ricordare che Martedì 12 Gennaio si terrà a Navacchio (PI) la tappa Toscana del Community Tour. L’evento è interamente dedicato allo Sviluppo Web, se volete registrarvi o ricevere maggiori informazioni su sessioni e location, visitate l’apposita pagina dell’evento sul nostro sito. Vi aspettiamo!! Technorati Tag: Community Tour,DotNetToscana,Eventi
(@ Dario: accetto la sfida!!! ) Nel mio ultimo post ho annunciato il rilascio di un framework per effettuare test funzionali per applicazioni desktop in maniera del tutto automatica. Dario ha accettato la mia richiesta rispondendo con un bel post su TestApi e Input Injection. Tutto ciò mi ha messo voglia di provare a rifare il solito test da lui proposto, però utilizzando white, così possiamo confrontare i due framework. Cominciamo!! Prima di tutto lo screenshot della mia applicazione, non è proprio identica a quella di Dario, ma va benissimo! Come sappiamo, lo...
Ivo Manolov annumcia sul proprio blog il rilascio di un tool open source per automatizzare il test della UI sia essa in WPF pittosto che WinForm. Sempre sul suo blog potete leggere il primo post guida del tool. Da questi post ho scoperto che esiste un blog su MSDN dedicato al testing di WPF. Esisteva già un tool open surce simile si chiama white ed anche questo è hostato su CodePlex. Technorati Tag: UnitTest,UI Test
Anch’io nei miei progetti WPF per rendere testabile la logica della mia applicazione senza rinunciare alla pontenza del DataBinding utilizzo (anche) il Pattern Model-View-ViewModel. L’interfaccia INotifyPropertyChanged gioca un ruolo fondamentale nell’implementazione di questo pattern quindi ne faccio un uso massiccio. Quello che non mi è mai piaciuto di questa interfaccia è l’uso delle stringe per indicare qual è la proprietà modificata, vediamo un semplice esempio dell’uso di INotifyPropertyChanged: 1: public class Person : INotifyPropertyChanged {
2: public event PropertyChangedEventHandler PropertyChanged;
3:...
Una delle novità di WPF 3.5 SP1 sono gli Shader Effects, adesso il Team di WPF ha pubblicato su CodePlex la Windows Presentation Foundation Pixel Shader Effects Library, una libreria contenente molti Shader Effects, direttamente dalla home del progetto:
Initial seed includes:
Effects:
BandedSwirl, Bloom, BrightExtract, ColorKeyAlpha, ColorTone, ContrastAdjust, DirectionalBlur, Embossed, Gloom, GrowablePoissonDiskEffect, InvertColor, LightStreak, Magnify, Monochrome, Pinch, Pixelate, Ripple, Sharpen, SmoothMagnify, Swirl, Tone, Toon, and ZoomBlur
Transition Effects:
BandedSwirl, Blings, Blood, CircleReveal, CircleStretch, CircularBlur, CloudReveral, Cloudy, Crumble, Dissolve, DropFade, Fade, LeastBright, LineReveal, MostBright,...
Fra i vari controlli presenti nelle prime versioni di Silverlight c’era la WatermarkedTextBox. Dalla release Beta2 tale controllo è stato rimosso. Adesso, pressati dalle forti richieste, il team di Silverlight ha rilasciato il codice sorgente del suddetto controllo.
Sorgenti: WatermarkedTextBox-Source.zip
Binari: WatermarkedTextBox-Binary.zip
Fonte: Silverlight 2 Watermarked TextBox Control
Technorati Tag: Silverlight
Visual Studio 2008 Sp1 non visualizza l’evento MouseDoubleClick per un ListBoxITem, come se non esistesse:
In realtà tale evento esiste, è solo un problema di IntelliSense, quindi basta digitare il nome e tutto funziona:
Al seguente url è disponibile una piccola demo: ListItemDoubleClickDemo
Technorati Tag: WPF,Windows Presentation Foundation
XAML è un linguaggio dichiarativo general-purpose, sviluppato da Microsoft e derivato dall’XML, atto alla rappresentazione di gerarchie di oggetti. Attualmente XAML è utilizzato in Silverlight, Windows Presentation Foundation (WPF) e Windows Workflow Foundation (WF), ognuno con il proprio parser e runtime. Sul sito MSDN possiamo trovare un articolo che spiega le differenze fra il parser di Silverlight e quello di WPF.
Technorati Tag: Silverlight,WPF,Windows Presentation Foundation,XAML
Questo post doveva essere pubblicato già da po’ di settimane, ma gli impegni sono sempre pronti a mettere il bastone fra le ruote.
In WPF se mettete in Binding una proprietà di tipo boolean con un controllo RadioButton vi accorgerete presto di un bug nel motore di Binding.
Maggiori info su questo thread sul newsgroup di C#.
Grazie a Corrado per la segnalazione
Technorati Tag: Windows Presentation Foundation,WPF
Un interessante confronto tra il framework di una WPF Composite Application (Expression Blend) e un framework per creare WPF Composite Application (CompositeWPF).
Fonte: Expression Framework versus Composite WPF
Technorati Tag: ExpressionBlend,CompositeWPF,WPF,Windows Presentation Foundation
Non sono bravo a fare gli annunci formali quindi vado dritto al sodo, insieme ad un gruppo di amici abbiamo dato vita allo User Group Toscano su .NET, il sito è ufficialmente online da Venerdì 10 Ottobre. Alcuni di noi erano presenti alla tappa Toscana dell’evento Microsoft Days dove Pietro Brambati ha accettato la nostra proposta di sfruttare l’occasione per presentare il neonato gruppo (con tanta insistenza da parte nostra non poteva rifiutare ). Pietro si è dimostrato molto disponibile ed alla fine ha fatto molto di più di quello che abbiamo chiesto…
Sempre in quell’occasione ho avuto il piacere di...
Interessato dal post di Antonio sull'uso del TDD per progettare applicazi multithreading ho deciso di riprovare senguendo il percorso logico da lui espresso, usando RhinoMocks come framework di mocking piuttosto che i mocks manuali usati da Antonio per non complicare il codice di test. La versione di RhinoMocks utilizzata è la 3.5 RC che potete scaricare a questo url, questa versione della libreria supporta la sintassi Arrange/Act/Assert permettendo di scrivere test molto più chiari, per maggiori info visitate questa pagina. Adesso vediamo e commentiamo i vari metodi di test, cominciamo con il primo: ...
Dopo aver chiesto ad i CDays2008 a Mauro cosa pensava dei mixin, dopo aver letto i vari post di Andrea, Raffaele e Gian Maria che parlano di POCO e dopo aver letto i due post (qui e qui) nel blog inglese di Gian Maria ho deciso di spiegare meglio cosa intendevo con il mio commento al post di Andrea. Gian Maria mostra due modi diversi per rivolvere il "problema" dell'interfaccia INotifyPropertyChanged creando proxy a run-time, io avevo risolto il solito problema usando Spring.NET AOP. Questo dimostra che come al solito ci sono svariati modi per ottenere il solito risultato....
Leggendo il libro LINQ in Action vinto ai Community Days 2008 (consegnato direttamente da Andrea) ho scoperto un comportamento degli Extension Methods che non conoscevo. Il quesito posto nel libro è: cosa succede se un Extension Method va in conflitto con un Instace Method? Semplicemente "perde la battaglia" in quanto un Extension Method ha una priorità più bassa. Riporto lo snippet e l'output presenti nel libro: 1: using System;
2:
3: namespace ExtensionMethods
...
Nella sessione Realizzare applicazioni estendibili e configurabili di Mauro si è parlato prima di tutto dei principi di design che permettono di rendere una applicazione estendibile e come migliorare tale design grazie al refatoring. A sessione finita mi sono soffermato fuori dalla sala con Mauro a discutere di come queste pratiche siano fondamentali per non rendere la nostra applicazione un monolite e come il TDD può aiutare a disegnare il proprio software rispettando i principi di design. Quindi mi sono deciso a scrivere questo post per fornite un po di risorse utili sull'argomento. Naturalmente questa lista pretende solo di far...
Nicolò commentando il mio ultimo post mi ha chiesto di mostrare: "...un esempio in cui si accede da un thread secondario a quello che gestisce l'interfaccia utente?" niente di più facile! Per la (piccola) demo ho creato un'applicazione WPF, all'interno della Window ho inserito uno StackPanel con un TextBlock (da aggiornare) e due Button, il primo che mosta l'eccezione che viene scatenata se si prova ad accedere alla UI da un thread secondario ed il secondo che mostra come utilizzare la classe System.Windows.Threading.Dispatcher per accedere nella maniera corretta alla UI. Di seguito lo XAML: <Window x:Class="AccessUIThreadDemo.Window1"
...
Chiunque lavori da diverso tempo con il .NET Framework saprà che esistono diverse implementazioni della classeTimer, le quali sono: System.Threading.Timer System.Timers.Timer System.Windows.Forms.Timer Per maggiori informazioni leggete questo articolo di MSDN Magazine: http://msdn.microsoft.com/en-us/magazine/cc164015.aspx. Con l'arrivo di WPF è stata introdotta un'altra classe Timer: System.Windows.Threading.DispatcherTimer. Come ogni Timer che si rispetti la classe non fa altro che eseguire un operazione (metodo) allo scadere di un intervallo di tempo. Quindi la domanda che viene subito in mente è: perchè introdurre un'altra classe Timer?? Seplice, questa implementazione utilizza l'oggetto System.Windows.Threading.Dispatcher...
Rappresenta la modalità di intercettamento di un motodo e quindi la modalità di intruduzione del codice. I tipi di Advice sono quattro: AroundAdvice: implementa l'interfaccia IMethodInterceptor e permette il massimo controllo su un metodo dato che possiamo aggiungere logica primo e dopo l'invocazione del metodo target. Questo è l'Advice più potente ma anche il più richioso, dato che possiamo dimenticare di chiamare il metodo Proceed() che rappresenta l'invocazione del metodo target. BeforAdvice: implementa l'interfaccia IBeforAdvice e permette di introdurre codice soltanto prima dell'invocazione del metodo target. AfterReturningAdvice: implementa...
Un Pointcut definisce una regola di individuazione di un Joinpoint. Spring.NET offre diverse implementazioni di Pointcut, forniti come moduli indipendendi, implementati come singole entità in modo da renderli riutilizzabili ed intersecabili per diversi Advice. Ogni Pointcut implementa l'interfaccia IPointcut, la quale tramite i due membri ITypeFilter e IMethodMatcher permette di filtrare in base al tipo ed alla firma del metodo. Nella maggior parte dei casi le implementazioni dei Pointcut sono gestite in maniera statica (StaticPointcut), in modo da effettuare il caching del risultato di una valutazione di matching (operazione costosa in termini di performance) la prima volta che...
Altra parte fondamentale di Spring.NET è l' AOP Framework. Questo post non vuole spiegare che cosa è o non è l'AOP, ma vuole focalizzarsi soltanto su gli strumenti forniti da Spring.NET per utilizzare questo paradigma di programmazione nelle nostre applicazioni .NET. Tutta via, un minimo di infarinatura è obbligatoria, in poche pareloe l'Aspect Oriented Programming è un paradigma complementare all'Object Oriend Programming e permette di modularizzare gli aspetti ed i comportamenti trasversali della nostra applicazione, separandoli dal dominio applicativo. L' AOP è composta da i senguenti concetti non legati al framework utilizzato ma al paradigma stesso: ...
Full .NET Archive