A DotNet Raider

My adventures in the .NET world!
posts - 49, comments - 12, trackbacks - 0

My Links

News

Website View Martino Bordin's profile on LinkedIn

Archives

Post Categories

WPF

My adventures in the WPF world
Utilizzare l’interfaccia Metro su un’applicazione WPF

Se negli ultimi anni non avete vissuto su Marte, avrete sicuramente sentito parlare dell’interfaccia Metro (per i marziani, ecco un link che vi spiega velocemente cos’è  ). Nel caso stiate sviluppando applicazioni per Windows Phone o Windows 8 (le famose Metro App), avrete già tutti i controlli disponibili che seguono questo stile, senza dover adottare alcun accorgimento particolare.. E nel caso di applicazioni WPF? Bhè, esiste il toolkit di Mahapps, che ci omaggia di una serie di controlli, stili, behaviors e attached properties che fanno proprio al caso nostro! Come potete vedere il risultato è notevole, e senza particolari stravolgimenti del nostro Xaml: Metro is...

posted @ lunedì 11 giugno 2012 17:00 | Feedback (0) | Filed Under [ WPF ]

Merge di DLL in un’applicazione WPF

Recentemente ho dovuto creare un’applicazione WPF che fosse facilmente distribuibile (leggi: distribuire solo l’exe). Purtroppo il tool ILMerge non funziona per applicazioni WPF, a causa di problemi con le risorse contenute in esse (esistono comunque tool funzionanti di terze parti, a pagamento). Seguendo questo post, ho creato un esempio che qui illustro e che potete scaricare qui. L’applicazione visualizza semplicemente il fullname di due classi presenti in 2 assembly referenziati:   Per prima cosa è necessario modificare il file di progetto dell’applicazione WPF aggiungendo, dopo “Microsoft.CSharp.targets” , il seguente snippet: ...

posted @ giovedì 5 aprile 2012 15:07 | Feedback (1) | Filed Under [ WPF VISUAL STUDIO ]

Listbox WPF: disabilitata ma non troppo!

Recentemente ho dovuto realizzare una sorta di wizard in WPF, ovvero una classica window con un’intestazione, una listbox a sinistra che visualizza gli step (evidenziando lo step corrente) e un contentpresenter in cui verrà caricato il contenuto dinamicamente. Niente di complicato. La cosa “particolare” è il fatto che la listbox con l’elenco degli step è read-only, ovvero  deve solo presentare i dati e l’utente  non deve poter selezionare qual’è lo step corrente..altrimenti che procedura guidata è? . Ovviamente è possibile disabilitare la listbox , ma in questo  modo lo stile applicato rende il tutto poco usabile e gradevole (un grigio che mina...

posted @ martedì 3 aprile 2012 14:55 | Feedback (1) | Filed Under [ WPF Blend ]

Automapper : creare Dto da proxy Nhibernate

Se utilizzate AutoMapper per creare Dto da oggetti letti con Nhibernate e lazy-loading attivo, è possibile che otteniate un’eccezione di tipo ObjectDisposedException, in quanto Automapper accede a proprietà “Lazy”, ma la sessione è già stata chiusa e distrutta. Per risolverlo, basta implementare un Custom Resolver, che tornerà null qualora il tipo della proprietà che sto provando a mappare sia un proxy non inizializzato. Ecco quindi il codice: public class NhProxyResolver : ValueResolver<object, object> {     protected override object ResolveCore(object source)     {         return NHibernateUtil.IsInitialized(source) ? source : null;     } } ...

posted @ mercoledì 29 febbraio 2012 01:00 | Feedback (0) | Filed Under [ WPF SILVERLIGHT O/RM ]

Automapper : da Dto a ViewModel

Ultimamente, in una applicazione WPF, sto utilizzando pesantemente Automapper per convertire dei DTO, ritornati da un servizio , in ViewModel. Per chi non lo conoscesse questa libreria permette di mappare, in base a convenzioni, un oggetto in un altro . Detto cosi sembra banale e quasi inutile, in realtà se leggete la documentazione e fate qualche test capirete che offre un sacco di funzionalità e vi tornerà utile in moltissimi casi, tra cui quello che da il titolo a questo post. Inoltre, essendo estramemente versatile, possiamo anche creare regole custom per mappare gli oggetti o definire eccezioni in questo modo: ...

posted @ sabato 3 dicembre 2011 14:59 | Feedback (0) | Filed Under [ WPF SILVERLIGHT ]

Blendability con Moq e NBuilder

Che il vostro progetto sia sviluppato in WPF, Silverlight o Silverlight per WP7 un aspetto fondamentale (direi quasi un requisito non funzionale) da soddisfare è il supporto ai designer di Visual Studio/Blend, identificato con il termine “Blendability”. Anche se può sembrare banale, in realtà la faccenda si complica man mano che i nostri ViewModel prendono forma e utilizziamo IoC. In soldoni il Designer non è in grado di rappresentare graficamente una View collegata ad un ViewModel di questo tipo: public MainViewModel(IPersonService personService) {     People = new ObservableCollection<Person>(personService.GetAll());       ShowPersonDetailCommand = new RelayCommand(PerformShowPersonDetail, CanShowPersonDetail);...

posted @ martedì 9 agosto 2011 15:59 | Feedback (0) | Filed Under [ WPF SILVERLIGHT VISUAL STUDIO WP7 Blend ]

Uno snippet per i routed event

Come sapete i routed events sono, assieme alle dependency properties, 2 features molto importanti di WPF, fondamentali se dovete sviluppare Custom Control. Purtroppo la sintassi per dichiararli ed inizializzarli non è esattamente 'straightforward'. Grazie agli snippet di Visual Studio dichiarare una DependencyProperty è un gioco da ragazzi..stranamente però non esiste uno snippet per i Routed Events. Poco male, potete scaricare lo snippet per i routed event qui

posted @ giovedì 19 agosto 2010 19:18 | Feedback (0) | Filed Under [ WPF ]

Multibinding e StringFormat

Dalla versione 3.5 SP1 del framework .NET è possibile utilizzare una nuova funzionalità detta MultiBinding. In che cosa consiste? Bhè, vi sarà capitato di dover visualizzare a video, magari tramite il controllo TextBlock, informazioni contenute in proprietà distinte della vostro origine dati (ovvero proprietà del ViewModel). Invece di utilizzare TextBlock, annidate dentro ad uno StackPanel, distinte collegate ad ogni singola proprietà potrete usare questo markup: Mediante la proprietà StringFormat potete controllare come viene formattata la stringa, e utilizzando gli oggetti Binding potete visualizzare tutte le proprietà che volete..comodo vero? Ovviamente si possono utilizzare le canoniche FormatString .NET (es: {0:c},...

posted @ giovedì 19 agosto 2010 19:11 | Feedback (0) | Filed Under [ WPF ]

Powered by:
Powered By Subtext Powered By ASP.NET