Luca Regnicoli

giugno 2005 - Posts

CrossFire!

Non sono mai stato un super esperto di hardware, ma grazie alla passione incondizionata per Avalon, DirectX e videogame (l'ultima in modo quasi preoccupante :-)), ho dovuto coltivare un minimo di cultura sulle schede video e sulle funzionalità ad esse legate.
Non vi preoccupate quindi, non inizierò a scrivere post sulla bellezza di uno switch o sulle qualità di un router, anche perchè non saprei da che parte iniziare :-). 

Ecco l'articolo: http://blogs.devleap.com/luka/articles/5197.aspx

Avalon databinding

Vi ricordate qualche post fa? Abbiamo parlato del property change notification, ovvero della possibilità di notificare automaticamente la UI di modifiche avvenute all'interno di un source item. Ci siamo addentrati nel codice del code-behind, oggi vedremo la parte relativa a XAML.

Inseriremo all'interno di un'elemento Resources due oggetti: un riferimento alla collezione Valutazioni (definitiva nel code-behind) e un DataTemplate per personalizzare l'aspetto di ogni singolo LIstBoxItem in binding. Termina il sorgente la definizione della ListBox con le proprietà ItemsSource e ItemTemplate opportunamente impostate.

<?Mapping XmlNamespace="NamespaceDiMapping" ClrNamespace="DevLeap" ?>
<DockPanel xmlns="..." xmlns:x="..."  xmlns:c="NamespaceDiMapping"  >

  <DockPanel.Resources>
    <c:Valutazioni x:Key="FonteDati"/>

    <DataTemplate x:Key="ValutazioneTemplate">
      <Canvas ...>
        <TextBlock ...  TextContent="{Binding Path=Auto}"/>
        <TextBlock ...  TextContent="€" />
        <TextBlock .... TextContent="{Binding Path=Prezzo}"/>
      </Canvas>
    </DataTemplate>
  </DockPanel.Resources>

  <ListBox ...
    ItemsSource="{Binding Source={StaticResource FonteDati}}"
    ItemTemplate="{StaticResource ValutazioneTemplate}"/>
</DockPanel>

Da notare la definizione del mapping fra il namespace CLR che contiene la definizione della collection Valutazioni e un namespace per il contenuto xaml.
I puntini di sospensione nel sorgente xaml contengono banale codice di formattazione (background, width, height), ho preferito ometterlo per mantenere più chiari i concetti di binding.
Nota: potevamo anche impostare le Resources a livello application per condividere tali informazioni per tutte le page.

Office 2003 Primary Interop Assembly

La news è ormai vecchiotta, ma forse a qualcuno è sfuggita: Microsoft ha rilasciato un setup per installare tutti i Primary Interop Assembly di Office 2003.

Il link è http://www.microsoft.com/downloads/details.aspx?FamilyID=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en

Per chi ha sviluppato con .NET 1.x e Office 2003, VSTO SmartDocs o SmartTags, sa che il deploy di queste soluzioni non è proprio indolore e un lato veramente brutto dell'installazione era proprio la mancanza di un setup specifico per i PIA di Office 2003. L'unico modo per installarli era tramite il setup di Office!!
Per gli sviluppatori "smanettoni" va benissimo personalizzarsi il setup, ma per un classico utente non è proprio il massimo della vita perdersi nei vari menu del setup alla ricerca dei .NET Programmability Support :-).
Per essere onesti esiste un caso nel quale l'utente non deve lavorare con il setup, ovvero quando ha installato il .NET Framework PRIMA del setup di Office, in tal caso, l'installazione standard di Office imposta i PIA con l'icona "1", ovvero "installed on first use"; all'utente verrà semplicemente chiesto il cd di installazione al primo avvio della nostra soluzione.
Dimenticav in tal caso l'installazione potrà anche essere silent se l'utente, al termine dell'installazione di Office 2003, ha scelto " di non cancellare quei 300 mega di roba che il setup di Office ha lasciato sul disco", è una checkbox nell'ultimo step del wizard di setup.
Se invece l'utente installa Office 2003 e POI il .NET Framework i PIA hanno l'icona "X" ovvero "non installato", in quel caso il povero utente doveva cambiare a mano le impostazione o al massimo il setup della soluzione custom poteva, dopo aver installato il Framework 1.1, aprire il setup di Office e instruire l'utente a cliccare next->next->finish, senza personalizzare niente. Perchè? Perchè in quel caso il Framework era presente e ritorniamo quindi nel caso precedente (icona a 1, installed on first use).
Per chi ha creato dei pacchetti commerciali  la possibilità di avere un msi con i PIA è quindi fondamentale.

PropertyChangeNotification

In Avalon è possibile collegare elementi di interfaccia utente a data item per eseguire un classicissimo One-Time binding, la UI visualizzerà (se funziona :-)) i dati iniziali presenti all'interno del data item, ma non rifletterà in modo automatico le modifiche effettuate nello strato sottostante.
Questo significa che possiamo prendere la proprietà Nome del oggetto Cliente e collegarla, o "baindarla" :-), a un TextBlock (nuovo nome per vecchia label), ma se cambiamo nel code-behind il valore della proprietà Nome, il TextBlock non visualizzerà in modo automatico le modifiche.

Per consentire tale funzionalità, dobbiamo scrivere del codice per supportare quella che viene chiamata "property change notification". 
E' sufficiente implementare l'interfaccia INotifyPropertyChanged  nella nostra classe sorgente (la classe Persona di prima) e dichiarare un evento chiamato PropertyChanged con un delegate PropertyChangedEventHandler.

Ecco il codice relativo http://blogs.devleap.com/luka/articles/5199.aspx

Custom Visual Tree: ControlTemplate o DataTemplate?

Nella CTP di marzo di Avalon e Indigo era possibile personalizzare il meccanismo di composition del visual tree in xaml solo tramite stili.
Stop! Fermiamoci un attimo, magari non tutti sanno che roba è..  Una caratteristica fondamentale di Avalon è la possibilità di creare oggetti complessi da oggetti semplici, senza utilizzare subclassing. Il meccanismo in questione si chiama composition e ha come "capo" il composition engine.

Ecco l'articoletto http://blogs.devleap.com/luka/articles/5198.aspx

Office Smart Document F.A.Q.

Per chi di voi non lo sapesse, l'anno scorso in compagnia del buon Carlo Pinasco ho girato l'Italia e i maggiori ISV raccontando come sviluppare soluzioni concrete con Office System 2003 e Smart Document. Il progetto non comprendeva solo la formazione ma anche un support ai vari sviluppatori per aiutarli a superare le difficoltà di tale tecnologia. A questo punto mi balzerà in mente... e a me che me ne frega di quello che hai fatto l'anno scorso? 
Un attimo che arrivo: tutte le domande che mi sono state rivolte (e non sono poche...), sono state collezionate in forma anonima, insieme alla loro risposta ovviamente :-), in un documento di una quarantina di pagina.
 
Per i lettori di DevLeap e per tutti gli appassionati di SmartDocs (ci vuole un gran coraggio per appassionarsi eh!), un regalo: ecco il documento.    

 

A volte si cambia

Onestamente scrivere sui blog non mi ha mai particolarmente interessato, forse per pigrizia, forse per paura di scrivere troppe banalità, ma da un po' di tempo l'idea di poter scrivere qualcosa si è fatta sempre più reale, finchè ieri sera non ho comunicato la sofferta decisione agli altri devleapppppers :-).

Beh, che dire, questo è il mio primo post, ed è solo un semplice benvenuto per invitarvi a leggere un po' di notizie e contenuti tecnici di vario genere.
Di che cosa mi occupo? Questa è proprio una bella domanda! L'amore per il web ed in particolare per ASP.NET è sempre forte e con RoB trascorriamo spesso pomeriggi a decompilare la System.Web.dll della 2.0 per scoprire sempre qualcosa di nuovo :-). Quasi due anni fa ho iniziato per gioco, come mio solito, a sviluppare con Office, un altro mondo interessante da scoprire: SmartDocument, SmartTags, VSTO (1.0 e 2.0 o 2005) e per finire per quel gran bel prodotto di Information Bridge Framework. Managed DirectX 9.0 per colmare il desiderio di una vita di scrivere un videogame, alla fine ce l'ho fatta a creare un gioco, dal punto di vista tecnico è (quasi) ineccepibile e performante... ma divertente come un calcio negli stinchi :-), chissà forse un giorno vedrete un oneday sullo sviluppo di videogame con DirectX e .NET... Ho lasciato per ultima la tecnologia a cui dedico la maggior parte dei miei studi, da PDC 2003 il fulmine ha colpito ancora e Avalon è entrato prepotentemente nella mia vita. Ah dimenticavo, sono il papà del corso DevLeap Avalon Preview.

Ai prossimi post