BAML e Style di Avalon

di Cristian Civera, in Longhorn,

Se c'è una cosa che mi fa arrabbiare quando scrivo in XAML è la scarsa documentazione e il fatto che appena ti muovi dalle normali funzionalità, qualcosa non va o non sai come farla. D'accordo, è una CTP, ma in Avalon gli style sono un'ideona, perché vanno molto oltre al concetto di style che abbiamo adesso.
Permettono di ridefinire qualsiasi controllo e ogni sua proprietà. Inoltre con i Commands è possibile anche ridefinire controlli più evoluti come lo ScrollViewer.
Nella sessione su Avalon a Bologna avevo mostrato uno ScrollViewer ricolorato, ma come si fa a sapere che controlli vanno cambiati? Spulciando il codice si scopre che utilizza un VerticalScrollBar e il gioco è fatto. Ma altri controlli sono più complessi.

I controlli stessi di Avalon infatti usano a loro volta dei controlli primitivi e sfruttano anch'essi gli style per definire il loro layout. Se si dà un'occhiata all'assembly PresentationFramework tra le risorse si trovano gli style compilati in BAML. Questo perché bottoni, combo ecc emulano lo style attuale Luna di Windows e non utilizzano più le librerie GDI32.

Il motore di Avalon usa la classe Parser per istanziare dal codice binario BAML il grafo dei controlli tramite il metodo LoadBaml. Se guardate il codice di un'applicazione Avalon troverete del codice autogenerato nella vostra classe che appunto chiama questo metodo.
Gentilmente hanno dotato la classe anche di un SaveAsXml che praticamente fa il lavoro contrario.
Quindi, se caricate un file di risorse da un'applicazione Avalon, caricare con LoadBaml il grafo e poi lo risalvate in xaml con SaveAsXml otterrete una decompilazione del codice BAML. Questo funziona con le normali applicazioni Avalon, ma purtroppo non con gli assembly di Avalon (almeno, io non ci riesco, ho un errore sconosciuto).
E' un peccato, perché sarebbe stato utile per capire la struttura dei controlli.
Speriamo in futuro di avere maggiori informazioni.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese