ASP.Net  »  Guide  »  Guida ASP.NET 2.0 

Applicare un Tema in fase di runtime



In questa lezione vedremo come applicare un tema in fase di runtime, per consentire ad esempio ad un utente, di scegliere il tema che gli piace.

A tale scopo, riprendiamo il progetto realizzato nella precedente lezione. Nella cartella App_Themes aggiungiamo un nuovo tema chiamiamo "Moderno" e vi aggiungiamo skin per definire l'aspetto dei controlli presenti nell' applicazione. Infine in Esplora Soluzioni, saranno visibili i due temi con i relativi file skin.

Figura 1. I due temi in Esplora Soluzioni

I due temi in Esplora Soluzioni

Usiamo la pagina "Default3.aspx" per realizzare gli skin del tema Moderno in modo visuale e poi copiare il contenuto nei file di interfaccia.

Nella Default.aspx,invece, aggiungiamo una DropDownList, che servirà all'utente per scegliere il tema, ed accanto ad esso un Button, che servirà a dare l'invio per impostare il tema scelto.

Per collegare la lista dei temi disponibili al controllo di selezione (DropDownList) dobbiamo scrivere qualche riga di codice nel gestore dell'evento Page_Load. Si tratta di trovare la cartella App_Themes e le sue sottocartelle per poi inserirle tra gli elementi della DropDownList.

Listato 51. Inserire i temi nella DropDownList

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    string[] temi = Directory.GetDirectories(Request.PhysicalApplicationPath + "App_Themes");
    DropDownList1.Items.Clear();
    foreach(string tema in temi)
      DropDownList1.Items.Add(tema.Substring(tema.LastIndexOf("\\") + 1));
  }
}

NOTA: Per gestire i dati delle cartelle dobbiamo ricordare di includere il namespace System.IO nella pagina di codice.

Una volta selezionato il tema, perché venga applicato dobbiamo implementare il gestore di Page_PreInit, evento che viene generato prima del rendering dei componenti.

Listato 52. Impostare il tema selezionato prima del rendering

protected void Page_PreInit(object sender, EventArgs e)
{
  string tema = Request["DropDownList1"];
  Page.Theme = tema;
  if (tema == null)
    Page.Theme = "Classico";
}

Possiamo ora mandare in esecuzione la piccola applicazione creata.

Figura 2. Tema "Classico"

Tema "Classico"

Proviamo a selezionare il tema "Moderno".

Figura 3. Tema "Moderno"

Tema "Moderno"

Ai temi possiamo anche associare dei CSS scegliendo ad esempio Aggiungi nuovo elemento>Foglio di Stile, dopo aver cliccato con il tasto destro sul tema. Ad esempio creiamo il file "Button.css" nel tema "Classico" ed impostiamo lo stile per l'elemento <input>.

Listato 53. Aggiungere un foglio di stile al tema

input
{
  font-style:italic;
  font-family:Verdana;
  color:Fuchsia;
}

Se proviamo a fare un test, ci accorgiamo che solo il tema Classico è affetto dal CSS, come è lecito aspettarsi, e lo stile italic viene preso da entrambi i pulsanti, mentre il colore fucsia solo da uno, quello con il tema disabilitato, infatti è presente uno skin che definisce il colore e comanda sul CSS.

L'esempio realizzato nel corso di questa lezione può essere scaricato da qui.

Ultimi articoli ASP.Net

LINQ e la trappola della 'deferred execution'

Una "trappola" in cui si può incappare utilizzando il risultato di...

C#, le Custom Type Conversion

Conversioni personalizzate tra classi, creare metodi particolari per...

Introduzione a Entity Framework

Il framework ORM messo a disposizione da .NET

Repeater: visualizzare un feed RSS

Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath()...

Repeater, il server control "semplice"

Cos'è e come funziona il controllo Repeater

Altri articoli

Guide ASP.Net

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Guida Visual Studio 2010

L'ambiente di sviluppo di riferimento per sviluppare applicazioni su...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto