UI Composition: fare injection di componenti della UI da qualche parte, pensiamo ad esempio un plugin. Con WPF possiamo farlo senza spararci! 
  Perchè ci serve fare UI Composition?
     - Cliente: necessità di modularizzare:             - Acquistare in configurazioni diverse 
- installare in configurazioni diverse 
 
- Team: necessità di gestire e lavorare 
Che problemi ci pone?
     - Region Management 
- Comunicazione tra attori che non si conoscono 
- Gestione ciclo di vita plugin/modulo 
- Obbligatorietà di IoC perchè bisogna avere a che fare con i contratti 
Le Region, che sono le parti della UI in cui iniettiamo i nostri controlli, possono essere  statiche o dinamiche, quelle statiche le possiamo individuare semplicemente con il nome, quelle dinamiche invece hanno bisogno di nome + contenitore che ci ospita. WPF e XAML ci danno massima libertà grazie alle Attached Property. 
  Ma come comunicano i vari elementi di interfaccia iniettati? Utilizzando un MessageBroker che ci permette di definire oggetti di tipo IMessage e spedirli: i moduli interessati a ricevere i messaggi si sottoscrivono al broker.
  Prism è un framework di UI Composition, disponibile su codeplex in due versioni, la 1 e la 2. Nella 1 non sono supportate le region dinamiche. Funziona sia con Silverlight che con WPF.