agosto 2009 Blog Posts
Il concetto di Modulo è uno dei pilastri portanti della logica di Prism. Il Modulo rappresenta l’unità logica fondamentale della nostra Composite Application, e pertanto deve obbligatoriamente essere compreso a fondo. Effettivamente, per implementare un modulo “compatibile” con Prism, le azioni da intraprendere non sono poi molte, ovvero si tratta semplicemente di crare una classe ed implementare un’interfaccia; per la precisione è l’interfaccia IModule, che si può vedere nel seguente snippet: 1: public interface IModule
2: {
...
Come già affermato in qualche mio precedente post, Prism è un’insieme di librerie per la creazione di applicazioni modulari fortemente disaccoppiate. Nella libreria di Prism viene messa a disposizione l’interfaccia IServiceLocator che può essere implementata per crearsi il proprio Container, oppure per adattare containers già esistenti all’utilizzo con CAL. Ovviamente CAL espone già un container “ready for use”: si tratta dell’interfaccia IUnityContainer presente nel namespace Microsoft.Practices.Unity della libreria Unity Application Block. L’interfaccia IServiceLocator, da implementare SOLO se il container “di default” non fa al caso nostro, è piuttosto semplice, come si può vedere nel seguente snippet: ...
I primi due concetti di Prism che andiamo ad approfondire sono la Shell ed il Bootstrapper. Shell La Shell rappresenta il “contenitore” che andrà ad ospitare l’applicazione Prism. Essa deve essere creata seguendo alcune direttive di CAL, ma essenzialmente può essere una Window o una Page. Al suo interno possono essere collocati dei controlli generici e dei controlli “particolari” che rappresentano le “regions” all’interno delle quali vengono iniettate le Views dei vari moduli (ricordiamoci che Prism è nato per supportare la modularità…). Un esempio di Shell può essere il seguente: ...
Pratico il KiteSurf, uno degli sport più belli del mondo. Non è uno sport faticosissimo, a meno che non ci si metta in testa di provare una nuova manovra; in questo caso la giornata può diventare MOLTO pesante per le volte in cui si cade in acqua, si prova, si perde la tavola, si ritenta, cade la vela; si chiama imparare… il mio corpo si sta adattando a dei nuovi movimenti che non conosce e ci vuole del tempo. Quanto non si può dire, dipende da moltissimi fattori: talento, atleticità, stato di salute, umore, voglia di rischiare… Mi è...
Non so voi, ma io mi trovo sempre più spesso a lavorare con lo XAML direttamente, senza usare l’editor grafico di Visual Studio 2008. Per la grafica, in effetti, c’è Blend! Il problema è che in caricamento, i file XAML sono piuttosto pesantini, soprattutto se le pagine sono elaborate… quindi, come fare a disabilitare l’editor grafico (a.k.a. Cider) in Visual Studio 2008? Molto semplice, andate su: Tools>>Options>>Text Editor>>XAML>>Miscellaneous ed impostate Always open documents in full XAML View Ho notato dei miglioramenti soprattutto quando si passa da un file xaml all’altro.
Dopo aver trattato i concetti di design, cerchiamo di capire quali sono gli aspetti prettamente tecnici che contraddistinguono una Prism Application. Quando si realizza una Prism Application è infatti necessario seguire un “iter” piuttosto ben formalizzato, che consiste nei seguenti passi: Creazione del progetto di Shell Definizione della “Shell Window” Definizione delle regioni contenitore Creazione del BootStrapper ...
Ultimamente ho avuto modo di leggere un bellissimo scambio di domande/risposte su StackOverflow (lo potete trovare qui). In pratica la domanda era: “… devo dare il focus ad una textbox al load della view. Sto impiegando MVVM, qual’è il metodo migliore per farlo?”. Una delle possibili risposte, per chi desidera applicare il pattern MVVM “strict”, ovvero senza assolutamente nessun code-behind nella view, potrebbe essere di utilizzare il FocusManager collegato ad una proprietà esposta dal ViewModel che indichi a quale controllo dare il focus. A parte il fatto che non mi piace l’idea che il ViewModel debba conoscere chi siano...