Ok, il titolo di questo post è più confuso che altro. Amen. Nei giorni scorsi ho creato una class library per .NET Framework 3.5, all’interno del quale ci sono Windows in XAML, ResourceDictionary, immagini e video. C’è anche una bella classe TagDataTemplateSelector, che eredita da DataTemplateSelector. Come ben sa chi sviluppa in WPF, una classe figlia di DataTemplateSelector ha un metodo pubblico SelectTemplate, che restituisce un DataTemplate piuttosto che un altro, in base alla logica che implementiamo nel metodo stesso. Questo serve ad esempio se avete una ListBox e volete applicare un template differente per ogni elemento: supponiamo...
Ogni tanto vi tedio parlandovi del plug-in per Windows Live Writer che mi sono scritto in WPF per poter “compilare” velocemente i tags con cui marcare i post che poi finiscono dritti dritti sul mio blog. Ricordo che questo plug-in fa parte di una piccola suite che ho pubblicato su CodePlex: i sorgenti sono pubblici e tutti voi potete utilizzarlo. Anzi, se mi trovate qualche baco, segnalatemelo! Ve ne parlo perchè nel frattempo qualcosa è cambiato. Vediamo di spiegare cosa e perchè. L’elenco di tags che il plug-in vi mostra arriva direttamente dal web-service esposto da Technorati.com. Questo...
Se siete sviluppatori WPF, non potete non dare un'occhiata a questo documento che fornisce una miriade di best practices su come sviluppare applicazione con Windows Presentation Foundation. Buona parte del documento è dedicato all'Automated Testing delle interfacce grafiche, dei media e delle animazioni 3D. Si parla di sicurezza, di globalizzazione e di localizzazione e molto altro ancora. Interessante. Fate riferimento a questo post su MSDN Blogs: da qui potete anche scaricare il documento in formato Word. Technorati Tags: wpf Programming guidance testing
In un'applicazione WPF che sto programmando nel tempo libero ho creato un'animazione che parte automaticamente all'apertura della Window principale dell'applicazione stessa. Essa prepara l'interfaccia utente con un po' di "effetti speciali": il titolo dell'applicazione appare con un fade-in stessa cosa per il background, ma con un leggero ritardo rispetto al titolo altre scritte appaiono ruotando e spostandosi velocemente sullo schermo, posizionandosi vicino al titolo poi appare il menù principale, anch'esso con un fade-in il logo VivendoByte viene posizionato in basso a destra sullo schermo...
Sinceramente? Sarò anche stanco - in questi giorni le giornate lavorative sono più movimentate del solito - però arrivare a sera e vedere che la classe SoundPlayer (namespace System.Media) di Windows Presentation Foundation non mi fa il play di un normale file audio .wav creato domenica mattina con WaveStudio francamente mi lascia senza parole. Non so se leggete bene l'exception, ma mi viene detto che il file wave che ho passato al metodo PlaySound() deve essere nel formato PCM. Che tristezza! Ora: ci vorrebbe un attimo ad aprire il file .wav con WaveStudio e vedere...
Sono stanco, perciò la farò breve. Innanzitutto, cos'è una tile brush? E' un'immagine che viene usata come texture per riempire una superficie di qualche tipo. Immaginate di cercare immagini su google usando le stringhe "wood texture". Troverete immagini 512x512, 300x300, 256x256 con superfici legnose che potete usare come background dei controlli o degli oggetti grafici delle vostre applicazioni. Comodo. IMPORTANTE. il mio è solo un esempio, non è che potete andare su Google e scaricare tutte le immagini che volete: occhio ai diritti di autore, alle immagini protette da copyright e via dicendo. Comunque, supponete di aver...
Questa mattina ho corretto ed uploadato l'ultima versione del VivendoByte WPF Technorati Tags, il plug-in per Windows Live Writer di cui avevo già parlato in passato. Usandolo avevo scoperto un piccolo bug. Come sapete, potete indicare i tags con cui taggare un post in due modi: o scegliendolo dalla lista di tags scaricata dal servizio WCF di Technorati o scrivendoli a mano nel caso in cui dovete indicare nuovi tags non ancora usati Se non selezionavate nulla dalla lista ma i tags li scrivavate solo a mano...
Un'altra modalità con cui è possibile esportare un'immagine da Expression Design è quello di generare un file XAML contenente al suo interno un ResourceDictionary. Lo scopo è quello di avere un file XAML che potete riutilizzare in più progetti. Oppure all'interno dello stesso progetto potete far riferimento alla stessa immagine, perchè questa viene inserita fra le risorse globali definite all'interno della stessa applicazione. Vediamo in pratica come fare. Esportare un progetto Expression Design in un file XAML Apriamo Expression Design, poi apriamo il file .design che contiene il nostro progetto. Andiamo sotto il menù File e...
Se dovete creare grafica vettoriale complessa potete usare Expression Design, un altro strumento della famiglia Expression. Questo software permette di disegnare grafica vettoriale in 2D: rettangoli, circonferenze, testo, ellissi, disegno a mano libera, etc. etc. Il tutto sfruttando le potenzialità di WPF, quindi effetti grafici come gradienti, drop shadows, emboss, mosaic e chi ne ha più ne metta. Per esempio, oggi pomeriggio, prima di andare in ospedale, ho ridisegnato il logo VivendoByte che qualche mese avevo creato con Corel Draw 12 proprio con Expression Design. Ecco qual'è il vantaggio: potete esportare l'immagine vettoriale che avete creato in codice XAML,...
Ingredienti: .NET Framework 3.0 minimo installato e funzionante Expression Blend 2 December Preview una Window un video supportato da WPF da visualizzare un'immagine temporanea (maggiori dettagli dopo) Cominciamo con il dire che la difficoltà della ricetta è alta, anche solo per il fatto che Blend ha il maledetto vizio di crashare un po' troppo. Si vede che siamo ancora in CTP con questo prodotto. Ricordatevi di premere CTRL+S ad ogni minima modifica, così potete eventualmente riprendere nel punto in cui vi siete...
Ad una ListBox generalmente possiamo fornire oggetti da visualizzare in due modi differenti: o utilizziamo il data-binding con la proprietà ItemsSource oppure accedendo alla proprietà Items, attraverso la quale possiamo aggiungere/rimuovere/ricercare oggetti. La proprietà Items è di tipo ItemCollection, una classe che espone un'interfaccia davvero semplice e potente al tempo stesso. Supponiamo di avere una Window con una ListBox popolata in questo modo. Se volessimo accedere agli oggetti contenuti nella ListBox possiamo scrivere in C# quanto segue: 1 ItemCollection photos = ListPhotosSelected.Items; 1 <StackPanel Orientation="Vertical"> 2 ...
Sto preparando una Window con WPF e XAML per mettere in attesa l'utente quando il software sta facendo qualcosa di piuttosto lungo, che potrebbe annoiarlo. L'operazione prevede la connessione ad un Web services con WCF per scaricare delle informazioni: la durata può variare dai 4 secondi in su, in base ai soliti parametri...qualità della connessione, velocità, etc. etc. Ho trovato tra i miei CD una vecchia licenza di Corel R.A.V.E., un software di animazione vettoriale: l'ho installato ed in un'oretta ho creato una piccola animazione, partendo dal logo VivendoByte che vedete in alto a sinistra sulle pagine del mio...
Se siete grafici, web-designer, web-developer e volete dimostrare di essere tosti con Silverlight, potete farlo partecipando al 1st European Silverlight Challenge, le cui iscrizioni sono state aperte oggi. Raggiungete il sito ufficiale della sfida, iscrivetevi e datevi da fare: la finale europea potrebbe essere vostra! La sfida è organizzata da Microsoft, da INETA e da XeDotNet, la community .NET in quel di Venezia. Se vi state chiedendo come partecipare, potete leggere il regolamento qua. La versione breve è: iscrivetevi, spedite il vostro lavoro in Silverlight entro il 28 Gennaio 2008 ed attendete i risultati entro il 12 Febbraio 2008. Tutto il...
Spesso e forse troppe volte leggo i pro ed i contro tra il classico Windows Forms e WPF, due tecnologie che io personalmente ritengo simili fra loro, soprattutto perchè tutto sommato si occupano di risolvere lo stesso problema, cioè quello della creazione di interfacce smart client efficaci e belle da vedere. WPF è ovviamente più moderno, offre molte cose in più che permettono di raggiungere risultati molto diversi e molto più piacevoli da vedere: parlo di tecniche proprie di WPF come gli stili, i triggers, le animazioni ed i tantissimi effetti grafici che possiamo sfruttare nativamente all'interno delle nostre applicazioni....
Certo che vedere Commando su Rete 4 e intanto leggere blog e scaricare software, è proprio un bel piacere! :-) Ho appena scaricato la September Preview di Expression Blend, sebbene avessi già installato la versione precedente. Magari - mi son detto - posso installarlo in una directory diversa, così tengo due versioni in parallelo. Anche perchè una è la licenza MSDN, mentre l'altra è una trial, ed è destinata a scadere. Invece no: quando ho lanciato il setup di Blend 2, mi ha detto di disinstallare prima la versione vecchia e ovviamente l'installazione abortisce. Technorati Tags: programming WPF Expression
Dopo Corrado ed Andrea, anche io mi aggiungo alla lista di quelli che hanno ricevuto dal mitico Charles Petzold il suo ultimo libro "3D Programming for Windows", dedicato completamente alla programmazione grafica 3D con WPF. Insieme al libro, mi è arrivata la spedizione di MSDN ed il numero di ottobre di MSDN Magazine. Qui sotto ho riportato la dedica che lo stesso Charles ha messo a mano sui libri che ha voluto regalare ai blogger di WPF: Ne farò tesoro, Charles, o almeno...lo spero! Technorati Tags: book programming WPF
Prevedo la stesura di un post piuttosto lungo. Cominciamo dagli ingredienti: Un'entità sul nostro domain model (Artista) definita in un assembly (DomainModel) Un assembly (DataAccessLayer) con un po' di classi che, tramite NHibernate, si occupano di persistere le entità definite nell'assembly al punto (1) su database (SQL Server) Un altro assembly contenente un progetto WPF - dettagli più sotto Tutto questo per garantire la separazione delle componenti software di un progetto: domain-model, dal e UI. Almeno queste. Non voglio fare il saccente, ma credo che la difficoltà sia Alta, ed i tempi di preparazione lunghi. E penso anche che darò un sacco...
Eventuali imprecisioni sono dovute all'ascolto, durante la stesura del post, di un concerto del Liga.Chiedo scusa: aiutatemi con i vostri commenti. :-) La classe DateTimeConverter è definita nel namespace System.ComponentModel nell'assembly System.dll. Il primo pensiero che ho avuto quando ho scoperto la presenza di questa classe - con questo nome - è stato: cavolo, posso metterla nelle risorse di una Window e sfruttarla nel meccanismo di data-binding tra un tipo DateTime ed un semplice controllo come la TextBox. Supponiamo di avere una Window semplice definita così: 1 <Window x:Class="StudyWPF.DataBindingWindow" 2 ...
Questa volta vi rimando direttamente al post del mio (nostro) amico Corrado, che è stato così gentile e paziente da sopportarmi sul Messenger per aiutarmi a venire a capo del (piccolo) problema che avevo. :-) Supponiamo di avere una Window con un certo numero di controlli (TextBox in primo luogo, ma non solo). Supponiamo di avere anche una StatusBar, con cui vogliamo dare alcuni tip all'utente che sta usando l'applicazione stessa. L'obiettivo era quello di mostrare sulla StatusBar un tip diverso a seconda della TextBox che ha il focus in quel momento. Dopo aver litigato con XAML per mezza giornata e ieri sera,...
Da un post sono venuto a conoscenza del progetto Family.Show, un software WPF sviluppato dalla Vertigo, hostato su CodePlex. Family.Show è un software per gestire l'albero genealogico della propria famiglia ed è completamente open-source. Questo screenshot è meraviglioso ed almeno per me la dice lunga... E il bello è che è installabile attraverso ClickOnce. L'ultima versione è la 2.0 del 17 Luglio 2007, quindi piuttosto recente. Non so voi, ma a me ha sempre appassionato la possibilità di poter disegnare ed elencare tutti i propri parenti, non fosse altro che mio padre ha una decina di sorelle ed...
Con WPF possiamo lavorare con molti strumenti diversi: Visual Studio 2005 (con l'opportuno supporto per il .NET Framework 3.0), Visual Studio 2008 (ancora in beta 2), la suite Expression, etc. etc. WPF è una tecnologia nuova, quindi è probabile che in futuro usciranno altri strumenti dedicati a sviluppatori e a grafici. Come ho letto da qualche parte, usciranno anche strumenti per grafici, e sarà la prima volta che il lavoro di un grafico sarà codice sorgente vero e proprio, e non un mero insieme di bytes che formano un'interfaccia grafica. Dal canto mio, sto rimbalzando usando un po' VS2005 ed un...
Non so se il nostro amico Charles Petzold (CP) regalerà davvero il suo ultimo libro 3D Programming for Windows: Three-Dimensional Graphics Programming for the Windows Presentation Foundation a tutti, ma a qualcuno - nella fattispecie un certo Jeff - sicuramente sì. E come altre persone, anche Jeff ha criticato abbastanza il precedente libro WPF. Ed oltretutto, il libro è anche autografato. Insomma, Charles, aspetto il mio. Technorati Tags: programming WPF book
Chi di voi ha lavorato con Visual Basic 6.0, o comunque con altri linguaggi di programmazione, sa che è possibile impostare - su una Label per esempio - un access key, ovvero impostare una lettera che premuta insieme al tasto ALT della tastiera dia il focus ad un controllo sulla stessa Windows Forms. Supponiamo di avere una Label la cui caption sia "Nome : " e supponiamo di voler fare in modo che, premendo ALT+N sulla tastiera, il focus finisca su una TextBox lì a fianco, cosicchè l'utente possa inputare il valore. In Visual Basic 6.0, questo si otteneva facendo precedere...
Come specificare Padding e Margin nello XAML di WPFCi sono molte cose che non mi entrano in testa. Per quante volte mi vengano spiegate, o per quante volte possa leggerle, non mi entrano in testa. Una di queste è il modo con cui specificare il Padding ed il Margin dei controlli WPF. Il Padding rappresenta lo spazio interno tra il contenuto di un controllo ed i suoi bordi. Il Margin rappresenta lo spazio tra il bordo del controllo e quello che gli sta accanto. Ci sono diversi modi per specificare questo valore. Il modo più comune è quello di...
La maggior parte delle volte ho visto gli stili dei controlli WPF definiti all'interno della Window nella quale poi lo stile stesso viene utilizzato. Lo stile in questo caso può essere utilizzato solo in quella particolare Window nel quale abbiamo creato lo stile. Se lo stile ci serve in altre Window, siamo obbligati a fare un copia & incolla dello XAML dove ci serve, il che non è proprio il massimo. In WPF possiamo inserire una risorsa all'interno del file App.xaml, all'interno del tag <Application.Resources></Application.Resources>. In questo modo lo stile è globale per tutta l'applicazione. Se inserissimo una risorsa con...
Da quando Roberto tartassò il mio ContextMenu alla cena degli ultimi Community Days, ho dedicato la mia vita a creare e a sviluppare un ContextMenu degno di tal nome. Non che ci voglia tanto con WPF, sono io che sono imbastito con gli strumenti grafici. E comunque Roberto un pochino aveva ragione: il ContextMenu al quale faceva riferimento era veramente orribile, a partire dall'impaginazione dei vari controlli. Dicevo: ho cercato di impegnarmi. Facciamo un passo alla volta. Ho una normalissima Window che contiene una Grid con una normalissima TextBox. <Grid HorizontalAlignment="Stretch" VerticalAlignment="Top"> <TextBox Margin="6" VerticalAlignment="Stretch" ...
Ho lavoricchiato stasera ad un ContextMenu un pochino diverso da quello tradizionale, che visualizza un pallino colorato di fianco ad ogni voce e soprattutto contiene una StatusBar che cambia il suo contenuto in base alla voce del ContextMenu su cui ci troviamo con il mouse. Ho uploadato sul mio sito un piccolo zip che per adesso non rendo disponibile, così lo sistemo un po': se ho tempo (ma non credo) ne parlerò velocemente domani. Il succo sta nel fatto che la proprietà Header del MenuItem non è detto che debba contenere per forza solo del testo, anzi. Io ci ho...
Ho aggiunto tra i miei feed preferiti e che leggo tutti i giorni quello di un certo Jaime Rodriguez che sembra essere tosto sul fronte WPF. Mi è piaciuta la mini-serie di 3 post sul drag'n'drop con WPF, perchè è molto chiara e non è per nulla complessa, anzi. Sottoscrivetevi al suo blog qua. I tre post che parlano di drag'n' su WPF sono questi: Drag & Drop in WPF ... Explained end to end .. Drag & drop in WPF part2 ... Drag & Drop in WPF.. part 3 .. the results and code... Technorati Tags: WPF programming blog
Ho scritto a Charles Petzold qualche volta in passato, parlando del suo libro e di WPF. Come ho avuto modo di dire in passato, non è che il suo Application + Markup mi abbia entusiasmato moltissimo. Ma Petzold sa come tenersi stretti i suoi lettori: a chiunque abbia un blog in cui si parli di Presentation Foundation, promettere di regalare una copia del suo prossimo libro 3D Programming for Windows, in uscita il prossimo 25 Luglio. Vabbè che su WPF ce ne saranno di migliori, ma come lui stesso ha detto a me: "My WPF 3D book is coming out in...
ll titolo fa anche (quasi) rima...non è proprio rima...come si dice? Assonanza? GiustoTorniamo a noi, perchè sono stanco. Questa sera ho voluto dare un'occhiata al Performance Profiling Tools for Windows Presentation Foundation incluso nel Windows SDK. Si tratta di uno strumento che serve a capire come l'engine di WF spende il suo tempo nelle varie fasi di rendering, layouting (!), gestione degli handler e così via. Causa ingenti impegni sul lavoro, ho solo letto velocemente qualche interessante articolo su MSDN e mi sono messo questa sera a sperimentarlo un pochino. Ho trovato inizialmente qualche difficoltà, perchè il tool tende a...
Partiamo da questo screenshot: L'altra volta avevamo visto come gestire da codice l'orribile TextBox inserita nel menù, con il relativo Button per poter salvare l'immagine sul proprio disco fisso locale. Per maggiori informazioni leggete questo post. Questo ContextMenu dà accesso ad alcune altre funzionalità piuttosto divertenti, come quella per richiedere l'elenco dei tag associati ad una particolare fotografia. Il codice è molto semplice e compatto: private void TagsMenuClick(object sender, RoutedEventArgs args) { FlickrBrowserPhoto photo = lstPhotos.SelectedItem as FlickrBrowserPhoto; string id = photo.PhotoId; PhotoInfoTag[]...
Alla fine della sessione di Corrado agli ultimi Community Days sul data-binding di WPF, gli ho chiesto se fosse possibile cambiare (e se sì, come) il template che WPF utilizza per evidenziare l'Item corrente su una ListBox. Il template di default è il classico blu, come quello che si vede nello screenshot qui sotto: A volte potrebbe essere utile e carino definire un nostro template con cui far vedere all'utente quale degli elementi elencati nella ListBox è quello selezionato. Corrado mi parlò di una cosa...che adesso ovviamente non mi viene in mente... Ma ricordo anche che consigliò di sottoscrivere il...
Guardate questo screenshot: E' lo screenshot di FlickrBrowser, il software in WPF che mi sto divertendo a creare nel tempo libero. Nella figura qui sopra, c'è l'elenco di 4 set fotografici: Microsoft Security Workshop VII, Giornata Azzurra 2007, AvioExpo 2007 e Nove Colli (Fiat 500) - 2007 - Fabio Edition. Il secondo set fotografico è selezionato: se ci facciamo sopra doppio-click, otteniamo la figura qui sotto: In pratica, una ListBox orizzontale che visualizza tutte le foto associate al set fotografico che abbiamo selezionato. Ho associato un ContextMenu ad ogni Image, che ovviamente appare cliccando col pulsante...
CodePlex.com ha tre progetti taggati con il tag Flickr. Essi sono: Vista Flickr Uploader Flickr Metadata Synchr MeiRou - A Flickr Photo Management Tool Mi interessano di più il primo e l'ultimo. Il secondo è un po' troppo macchinoso, perchè sincronizza un folder locale ad un set fotografico di Flickr. Non mi interessa, perchè secondo me fa più casini che altro. Non me ne voglia l'autore. Tutti e tre i progetti sono in WPF, perciò secondo me può essere interessante dargli un'occhiata. Technorati Tags: wpf software flickr
Il titolo del post è talmente significativo che potrei addirittura non scrivere nulla qua. Questa cosa dei controlli senza nome è una cosa a mio avviso comodissima, perchè non è detto che tutti i controlli che mettiamo su una Window o una Page abbiano davvero un significato dal punto di vista programmatico. Pensiamo alle classiche Windows Forms: credo che sia successo a tutti di mettere delle Label solo per dare un'etichetta a TextBox o ad altri controlli di input. Il designer ci mettere per default un nome come Label1, e poi dobbiamo essere noi a dare un nome più sensato. In certi...
Ho messo on-line il progetto Flickr Browser di cui ho parlato qualche tempo fa sul mio blog. Le caratteristiche che mi sento di evidenziare in questo mio piccolissimo progetto sono le seguenti: possibilità di avere l'elenco dei set fotografici di un determinato utente possibilità di sfogliare tutte le foto appartenenti ad un certo set fotografico avere le informazioni EXIF di una certa foto possibilità di salvare su disco locale una certa foto In una versione futura, sulla quale sto lavorando, vorrebbe andare anche a scrivere su Flickr, nel senso di poter uploadare qualche foto in un qualche set fotografico già esistente....
Diamo una breve occhiata all'ultimo XAML che abbiamo scritto per ottenere una ListBox con associato un template, definito in uno UserControl separato. <ListBox Name="lstPlayers" ItemsSource="{Binding Source={StaticResource players}, Path=HockeyPlayer}"> <ListBox.ItemTemplate> <DataTemplate> <a:HockeyPlayerTemplate /> </DataTemplate> </ListBox.ItemTemplate> </ListBox> A questa ListBox è stato associato, quindi, un solo template, HockeyPlayerTemplate, che fa in modo che a run-time la...
Piccola riflessione della serata. L'interfaccia utente di un'applicazione WPF viene descritta da un file XML, nella fattispecie XAML. Cioè significa che è serializzabile. Ciò significa che, per esempio, possiamo in un qualsiasi momento fare una sorta di dump di una Windows - supponiamo - e salvare il tutto in un file XML su disco. Il dump contiene lo stato di tutta la Window: dalla Windows stessa a tutti i controlli che vi sono contenuti, con tutte le loro proprietà. Sarebbe interessante, per esempio, avere una Window ed intercettare eventuali eccezioni nate al suo interno. Quando viene scatenata un'eccezione, si fa...
Siccome molti me lo chiedono via e-mail, e comunque ne aprofitto per riproporlo alla platea, comunico che ho reso nuovamente disponibile il download del mio plug-in per Windows Live Writer per inserire le emoticon. Invece di metterlo banalmente su un sito ftp e darvi l'url, ho pensato di sfruttare la piattaforma Sharepoint per mettere on-line un po' di roba. Ne parlerò in seguito. Dato che WH4L ogni anno si becca i miei soldini, vediamo di spendere ed usare per bene le cose che ho. :-) Detto questo, questa è una lista Sharepoint che ho denominato .NET Download, sulla quale pubblicherò i vari progetti freeware...