Technology Experience
.NET World

Template per evidenziare il SelectedItem di una ListBox

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 blog www.beacosta.com che lui stesso definì come una risorsa piuttosto importante per tutto quello che riguarda WPF. Manco a farlo apposta, il post del 1° Aprile scorso parla proprio di questa cosa.

Non voglio fare banalmente il copia & incolla dello XAML che compare nel post, per questo basta che cliccate sul link qui sopra, cercate un attimo l’ultimo snippet di codice ed il gioco è fatto. Voglio farvi vedere quello che ho realizzato io partendo dagli spunti e dalle considerazioni che ho trovato nel post.

La logica riguarda principalmente il trigger, che scatta nel momento in cui la proprietà IsSelected del singolo ListBoxItem diventa true. Quando questa condizione è verificata, vengono eseguiti uno o più setter su una o più proprietà. Nel caso dell’esempio di prima l’ellisse serve ad evidenziare un pianeta, mentre nel mio caso vorrei fare qualcosa di diverso, ovvero cambiare semplicemente il colore di sfondo. Il blocco XAML è riportato qui sotto:

 

<Style TargetType="ListBoxItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ListBoxItem}"> <Grid> <Rectangle x:Name="selectedItem" Margin="-10" StrokeThickness="2" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" /> <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="true"> <Setter Property="Stroke" TargetName="selectedItem" Value="LightGreen"/> <Setter Property="Fill" TargetName="selectedItem"> <Setter.Value> <LinearGradientBrush StartPoint="0,0.1" EndPoint="1,0.1"> <GradientStop Color="LightGreen" Offset="0.0" /> <GradientStop Color="White" Offset="1.0" /> </LinearGradientBrush> </Setter.Value> </Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>

 

Il template è composto da una Grid, che contiene una sola colonna ed una sola riga…di conseguenza…una sola cella. In questa cella sono presenti due elementi: un Rectangle ed un ContentPresenter. Quest’ultimo è l’area che contiene il contenuto effettivo del ListBoxItem. Il rettangolo invece non ha bordo e soprattutto non è riempito: in altre parole, inizialmente non è visibile e l’utente proprio non lo vede.

Quando viene selezionato un ListBoxItem dalla ListBox, si scatena il trigger che non fa altro che settare lo Stroke del rettangolo a LightGreen, e settare il Fill con un effetto gradiente dal LightGreen al White. Il rettangolo copre completamente tutta l’area necessaria a contenere il ListBoxItem. L’effetto finale, al contrario di quello che dice Roberto (Rob, sto scherzando…sono d’accordo con te!), questa volta è davvero molto gradevole!

Insomma, adesso quando seleziono un elemento dalla ListBox non compare in uno stupido blu sempre uguale…e soprattutto ho imparato come usare un template custom, che vuol dire poter utilizzare immagini e stili per fare il tutto molto più gradevole. ‘Sto WPF, se non si fosse capito, mi intrippa proprio.

Technorati Tags:    

Send to Kindle
My daily work

You need some insecurity if you’re…a programmer?

Da quando ho preso per la prima volta il Time (in questa occasione), quando ho potuto ne ho presi altri numeri. Trovo bello leggere un inglese che non sia il solito inglese tecnico al quale siamo tutti bene o male abituati. E poi si parla di attualità, di politica e di nuovi media. Questo mese tra le altre cose c’è un’intervista ad un certo Al Pacino (!!), al quale viene fatta una domanda un po’ particolare. La sua risposta mi ha colpito.

Question: After your lifetime-achievement award, do you feel more secure in the business than you did in, say, in 1977?
Answer: I’m secure in knowing things I would like to do [professionally]. But you need some insecurity if you’re an actor. It keeps the pot boiling. I haven’t yet started to think about retiring. I was shocked when I heard about Paul Newman retiring at age 82. Most actors just fade away like old soldiers.

Ho trascritto a mano dal cartaceo che ho qui davanti, perdonatemi eventuali errori di grammatica. Ho trovato giustissimo quello che dice: you need some insecurity if you’re an actor. It keeps the pot boiling. Credo che questa cosa valga anche per noi programmatori: non dobbiamo mai dire…ok, ho imparato tutto…anzi…dobbiamo sempre rimanere sul chi vive, sempre pronti ad assorbire nuove tecnologie, metterci sempre in gioco, perchè quello che oggi è un dato di fatto, magari un domani non lo sarà più. Dobbiamo sempre stare in guardia, insomma.

Ma forse sto solo dicendo sciocchezze. Mi sa che sono più stanco di quello che penso: vado a nanna.

Send to Kindle
My personal life

Un’avventura a Pietra Corva

Quando ero bambino, capitava che mio padre portasse me ed il resto della famiglia a Cicogni, minuscolo paesino immerso nel verde dell’appennino. Si univano a noi zii, zie e cugini vari. Potete vedere qualche foto di Cicogni qua. In questo paese c’è una piccola taverna, gestita da un certo Achille che ancora adesso riempie gli stomaci di tutti i visitatori ed i turisti che arrivano fino lì. Non so esattamente quanto sia l’altitudine del paesino in sè: il passo – Passo del Penice appunto – si trova a 1.460 metri ed è, come recita Wikipedia, una delle montagne più alte dell’Appennino di quella zona. Arrivarci è semplice, perchè basta imboccare la SS412 che parte da Milano, passa vicino a casa mia e attraversa borghi come Castel San Giovanni, Borgonovo Val Tidone, Nibbiano e così via. E’ meta di ciclisti e motociclisti (più o meno folli) che vogliono arrivare fino in cima, tutte le domeniche. Durante la salita in auto, si passa davanti alla diga di Val Tidone, ottimo posto di ristoro perchè c’è il bar e si svolgono spesso gare di tiro al piattello.
Se vi interessa saperne di più, o chiedete a me oppure partite dalla pagina di Wikipedia linkata prima.

Quando ho preso la patente (qualcosa come 13 anni fa) ho cominciato anche io a bazzicare quelle zone, perchè le trovo favolose. Non solo nei paesini in sè, quanto per tutti i sentieri che attraversano quelle montagne: boschi, prati, burroni, sentieri ripidi da (farmi) paura, bellissimi fiori, stagni, nomi di località che sembrano essere usciti fuori da un romanzo fantasy (Pan Perduto, Pietra Corva, etc.).

Vado ogni anno in quei posti (qua le foto del 2006), per farmi una bella camminata e per respirare un po’ d’aria pulita.

Solitamente ci vado durante maggio/giugno: quest’anno è capitato che andassi oggi, cioè il 1° luglio. Solo che ho fatto una cosa un po’ diversa: invece di partire da Monte Penice, farmi 3 ore di camminata e tentare di arrivare a Pietra Corva, ho fatto l’esatto contrario. A Pietra Corva c’è un bellissimo giardino alpino (ehm…alpino????), che stamattina ho avuto l’occasione di visitare per la prima volta: costo d’ingresso 2 euro.

Ho usato la mia Canon in alcuni casi per fare foto macro di soggetti davvero molto vicini.

Il set completo di fotografie è disponibile su Flickr qua.

E poi, dulcis in fundo, mi sono arrampicato fino alla vera Pietra Corva, ovvero l’enorme masso che dà il nome al monte. Vi posso solo dire che soffro di vertigini e quando sono arrivato in cima avevo a pochi passi di distanza un burrone devastante di fronte al quale – devo ammetterlo – mi sono fatto prendere dal panico. Ho sudato freddo, e mi sono dovuto sedere per riprendere coraggio. Da solo, a chilometri e chilometri dal più vicino centro abitato, senza campo con il cellulare: solo il GPS ed il Tom Tom mi dicevano dove mi trovavo. Per lunghi istanti mi son detto: “Qua a casa non ci torno più…“. E’ incredibile come sembri buffo scrivere adesso queste parole, ma vi posso assicurare che oggi pomeriggio – quando giravano silenziose nella mia testa – non lo era affatto. Comunque sia, in cima a questo masso si arriva dopo aver scarpinato per 300-400 metri, con una pendenza assurda: la vista è assolutamente favolosa, boschi, boschi, verde, verde a perdita d’occhio. Con perdita d’occhio intendo davvero decine e decine e decine di chilometri. Nessuna foto può dare l’idea, comunque ci provo.

Insomma, una gran bella domenica, da solo, in mezzo agli alberi, dalle 10:00 di stamattina fino alle 16:00. Da domani si ricomincia il lavoro, e con esso il tran-tran milanese.

Send to Kindle
Community

Misurate la vostra malattia per il blogging

Andate su http://mingle2.com/blog-addiction, rispondete a ciascuna domanda e saprete quanto siete malati di blog. Le domande sono piuttosto semplici: quanto tempo dedicate alla lettura dei blog altrui, quanti blog leggete, quanto spesso bloggate sul vostro, se qualche volta avete cercato di convincere qualcun’altro ad aprire un suo blog, su quali argomenti bloggate e così via.

Considerando che per me ormai bloggare è diventata una vera e propria passione (bloggo di ogni cosa, da WPF alla 500 del 1969, dalla mia famiglia al traffico che trovo a Milano), pensavo di essere ormai irrimediabilmente perduto, invece ho un “normale” 72%.

72%How Addicted to Blogging Are You?

Mingle2Online Dating

Technorati Tags:

Send to Kindle
My personal life

Una decisione "autolesionista", ma giusta!

Riporto:

Tiraboschi (direttore di Italia Uno, ndr) sottolinea in una dichiarazione che «finché si trattava di botte tra personaggi al confine tra i supereroi dei fumetti e i protagonisti dei cartoni animati, tutto funzionava nei giusti canoni dello spettacolo e del divertimento. Quando poi la cronaca nera più efferata contamina la nostra proposta, allora Italia Uno non ci sta più».

Ben Detto. Piantiamola.

Fonte : http://www.corriere.it/Primo_Piano/Cronache/2007/06_Giugno/29/wrestling.shtml

Send to Kindle
Software

Resharper mi trasforma VS2005 in italiano

Ho letto il post del buon Andrea Boschin di qualche giorno fa, dove dice di aver adottato la 3.0 release di Jetbrains Resharper. Così…mi son detto…perchè non provarlo pure io? E così ho fatto. L’impatto è più che buono, i vari tooltip appaiono nell’editor di codice segnalando questa o quella ottimizzazione. Però ho notato che mi ha tradotto in italiano parte dell’interfaccia di Visual Studio 2005, cosa che ho odiato profondamente. Odio leggere “Punti di interruzione” invece di “Breakpoints“, oppure “Lista degli errori” invece di “Error List“. Non so sinceramente se sia dipeso veramente da Resharper o se ho combinato io qualche casotto.

So solo che ho trovato il modo di sistemare le cose nelle Options di Visual Studio. Basta andare sul menù Tools –> Options –> Environment –> International Settings. Da qui è possibile fissare la lingua dell’IDE di Visual Studio. Il valore che vedevo era “Same as Microsoft Windows” (il mio era in italiano): basta metterlo su English ed il gioco è fatto.

Technorati Tags:   

Send to Kindle
IV del Venerdì

[IV] del Venerdì (9)

Pensa. Rifletti. L’orrore che provava per quello che stava vivendo era indescrivibile: il suo primo pensiero era per suo figlio, che teneva delicatamente fra le braccia, il figlio che ad ogni istante che passava si allontanava sempre più da lei, precipitando nell’oblio più nero. Si frugò in tasca alla ricerca del suo cellulare per chiamare aiuto. Sta’ calma e fai un respiro. Il suo corpo era scosso da tremiti che lasciavano trasparire un senso di panico mai provato prima. Chiuse gli occhi e si concentrò. La ragazza sentì gli occhi inumidirsi di lacrime di disperazione. Sentiva lo sguardo del Cantante, e soprattutto la canna della sua rivoltella, su di sè. Ciò nonostante si ritrovò in uno stato di calma interiore. “Tu sai chi eri. Tu sai cosa è giusto fare.” – si disse mentalmente. Fu proprio quella semplice frase a risvegliare in lei un’identità di un tempo lontano e remoto, un’identità che pensava di aver cancellato e rimosso completamente dalla sua vita attuale. La ragazza riaprì gli occhi e questa volta brillavano di coraggio e determinazione.

L’ho già scritto durante la settimana. Questo meteo è veramente favoloso. Fa venir voglia di starsene in giro, di pedalare e di farsi una bella scampagnata in montagna, in preparazione della camminata seria che il nostro neozelandese Simone sta organizzando per i primi di settembre. C’è stato un periodo in cui pesavo circa 85Kg: adesso sono 80Kg, ma ho una pancetta che non mi soddisfa. E’ per questo che oltre a qualche oretta in bicicletta mi sto dando da fare con addominali fatti a tempo perso. L’unica cosa che mi dispiace davvero è aver trascurato fortemente il fresbee, che è una delle cose che d’estate mi piacciono di più. Considerando che Fabio mi ha regalato un modello pro al mio ultimo compleanno, è davvero tristissimo aver fatto qualche tiro solo un pomeriggio con i miei amici di sempre Flavio, Federica e Davide. A proposito di quest’ultimo, ne aprofitto per salutarlo, dal momento che domani parte per la Tunisia per la sua vacanza.

A proposito di vacanze. Io personalmente mi sono prenotato le due settimane centrali di agosto. Al contrario dell’anno scorso, dove ho raggiunto i miei in Puglia, quest’anno mi sa che salto. Preferisco risparmiare e rilassarmi di più senza troppi sbattimenti. Man mano che passa il tempo, tra l’altro, ho capito che per il mio modo di fare e di vivere…ecco…il turismo non fa per me. Mi stresso troppo a passare le giornate a fare i conti per capire dove voglio andare davvero. Mi stresserei troppo a raggiungere aeroporti o stazioni ferroviari per partire per andare chissà dove. Difatti, anche negli anni passati, ho (quasi) sempre deciso all’ultimo, oppure l’opposto…cioè sapevo già da qualche millennio prima che volevo andare in un certo posto. E siccome fino ad oggi non ho alcuna particolare ispirazione, va a finire che salto direttamente le ferie, intese come “viaggiare da qualche parte”. In passato l’ho fatto e mi sono trovato bene, perchè starsene da soli e gestire una villetta per 10-15 giorni è una cosa spettacolosa. L’unica differenza è che negli anni scorsi avevo il mio Jolly che mi teneva compagnia, mentre quest’anno non c’è più.

Send to Kindle
My daily work

Lavoro intenso e sensazioni di stanchezza

E’ un periodo intenso sul lavoro.

Ieri mattina abbiamo fatto una demo al cliente: demo che si è conclusa per l’ennesima volta con estreno successo. Lo sviluppo prosegue a ritmo celere, e questo comporta il fatto che ho poco tempo di seguire i vostri blog e – peggio ancora – di scrivere qualcosa sul mio. Ho appena spento il notebook, sul quale sto facendo alcuni esperimenti con un progetto che fa un uso intenso di NHibernate.

Sono sempre più convinto del fatto che il nostro lavoro – così come qualsiasi lavoro intellettuale/di testa – mi fa tornare a casa (non sempre, ma qualche volta sì) davvero spossato. Una stanchezza che nei casi più gravi mi fa passare la voglia di prendere la bicicletta e di fare un po’ di movimento oppure di andare al cinema, di uscire con gli amici o semplicemente di mettermi in macchina. Ripeto: non è una cosa che mi succede spesso, ma quando mi prende sono assalito da una pigrizia sconfinata. E’ una cosa di cui tenere conto, credo, perchè non mi accadeva invece quando facevo il falegname: tornavo a casa fisicamente distrutto, ma con la voglia di essere sempre in movimento, o di raggiungere il mare anche durante un normalissimo sabato sera. Un po’ come dire…ozio chiama ozio.

Sto sbadigliando, vado a leggermi un po’ di SDL – Security Design Lifecycle, il libro che ho preso durante un evento TechNet a cui ho partecipato recentemente. Domani finalmente è venerdì: ho già deciso che sabato mi concedo una giornata di relax, mentre domenica – se il tempo rimane quello che è adesso – mi aspetta una bella camminata al Passo del Penice nel piacentino.

Technorati Tags:

Send to Kindle
My personal life

Quando a Milano…

Quando a Milano non c’è traffico, quando non piove e non c’è nebbia, quando ci sono parcheggi, quando non c’è quel caldo afoso che si appiccica addosso, quando i mezzi pubblici funzionano, quando non vedi passare ambulanze, quando non ci sono scioperi, quando nessuno si è buttato sotto la metro, Milano è proprio una bellissima città dove vivere e lavorare.

Send to Kindle
Hardware

Un Nokia in riparazione…e io che faccio???

Il 15 Giugno scorso ho portato in riparazione il mio Nokia N70 che tutto ad un tratto, una mattina, ha deciso di farmi vedere un display completamente bianco, a volte con pixel a caso. Il cellulare, in garanzia, è stato spedito il 21 Giugno non-so-dove. Il tipo ieri dell’assistenza mi dice che devo aspettare almeno un paio di settimane.

E intanto, che faccio??? Credo che un bel servizio da parte dei vari Nokia Point possa essere quello di dare al cliente lo stesso modello che sta lasciando in riparazione. Vi porto un N70 da mettere a posto??? Per favore, datemi un N70, piuttosto vi pago una caparra, un contributo, un qualcosa. Un cellulare che restituirò ovviamente nel momento in cui ritorna il mio dall’assistenza. Adesso io sono costretto ad usare un Sony-Ericsson K700 che, con tutto il rispetto, non può competere con il mio che è più moderno. Durante i Community Days non ho potuto bloggare perchè non sono riuscito a configurare  il Sony-Ericsson come modem. Non ho una fotocamera decente a 2Mpixel. Insomma, lo ridico e poi me ne sto zitto: sarebbe una bella cosa davvero che in un qualche modo il cliente Nokia venga un po’…come dire…tutelato ed aiutato. Perchè se avessi un N70 in sostituzione, sarebbe questione di un attimo ritrovarsi con la solita rubrica a cui siamo abituati: basterebbe andare a casa e far partire il Nokia PC Suite ed il gioco è fatto. Con un cellulare diverso ho dovuto installare nuovi tool/software che comunque hanno fallito la sincronizzazione. Insomma, un bel casino. Posso capire che la Nokia ci smeni un attimo, ma non ho deciso io che il mio N70 smettesse di funzionare. Che poi, diciamolo tranquillamente: dubito fortemente che il mio N70 ritornerà perfetto e funzionante entro 2 settimane: rischio davvero di partire per le vacanze senza il mio cellulare col quale faccio di tutto. Peccato!

Technorati Tags:  

Send to Kindle