Accesso ai dati in Silverlight 2.0

di Alessio Leoncini, in Silverlight 2.0, 30 settembre 2008

6 pagine in totale: <<Indietro 1 [2] 3 4 5 6 Avanti >>

In una semplice SilverlightApplication in Visual Studio o in Visual Web Developer Express è possibile accedere a queste informazioni utilizzando LINQ to XML aggiungendo nel progetto il riferimento all'assembly System.Xml.Linq:

Nel costruttore dell'UserControl principale è possibile utilizzare l'oggetto XDocument per caricare in memoria il file e successivamente utilizzare la sintassi LINQ per estrarre i dati:

XDocument menuSource = XDocument.Load("MenuHyperLinkFromXML.xml"); 
IEnumerable<XElement> items = from item in menuSource.Elements("menu").Elements() 
                               
select item;

In Silverlight il metodo Load cerca la risorsa nel file XAP dell'applicazione, quindi il file XML deve trovarsi all'interno del progetto insieme agli altri elementi e deve essere compilato in modo che sia copiato all'interno del file XAP, specificandone la proprietà Build Action a Content:

Valorizzata la collezione items si ha a disposizione una rappresentazione ad oggetti dell'infoset XML attraverso cui è possibile accedere ai singoli nodi interni con l'oggetto XElement.
Successivamente è possibile procedere alla creazione del menu in molteplici modalità, come in questo esempio:

foreach (XElement item in items) 
{ 
    HyperlinkButton link = new HyperlinkButton(); 
    link.Content = item.Element("text").Value; 
    link.FontSize = Double.Parse(item.Element("fontSize").Value); 
    link.NavigateUri = new Uri(item.Element("url").Value); 
    link.TargetName = item.Element("target").Value; 
 
    string foreground = item.Element("foreground").Value; 
    byte a = (byte)(Convert.ToInt32(foreground.Substring(1, 2), 16)); 
    byte r = (byte)(Convert.ToInt32(foreground.Substring(3, 2), 16)); 
    byte g = (byte)(Convert.ToInt32(foreground.Substring(5, 2), 16)); 
    byte b = (byte)(Convert.ToInt32(foreground.Substring(7, 2), 16)); 
    Color color = Color.FromArgb(a, r, g, b); 
 
    link.Foreground = new SolidColorBrush(color); 
 
    Menu.Children.Add(link); 
    Menu.UpdateLayout(); 
}

Per ciascun elemento della collezione, cioè per ciascun nodo del file XML, viene creato un oggetto HyperlinkButton cui vengono valorizzate le proprietà con le corrispondenti informazioni, infine ogni singolo hyperlink viene aggiunto alla collezione dei controlli figlio di uno StackPanel per elencarli automaticamente uno sotto l'altro.

Visualizza l'esempio

Questo semplice esempio ha una valenza puramente didattica ma assolve lo scopo di far intuire le molteplici soluzioni che possono essere applicate nell'ambito dello sviluppo di un progetto; come descritto nell'introduzione la base dati può contenere anche informazioni di tipo grafico e con grande semplicità si possono risolvere quelle situazioni quotidiane di revisione del codice che altrimenti richiederebbero un maggiore impegno.

I limiti di questo approccio si possono trovare nel vincolo di dover rappresentare le informazioni sotto forma di stringa essendo l'XML un formato di semplice testo, tuttavia, come mostrato nell'esempio, anche con il ridotto set di strumenti del .NET Framework ,inclusi nel runtime di Silverlight, questo limite è facilmente superabile.

6 pagine in totale: <<Indietro 1 [2] 3 4 5 6 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.
maltra scrive:
Accesso ai dati in Silverlight 2.0

Articolo interessantissimo, veramente utile ... è servito a togliermi molti dubbi!
martedì 30 settembre 2008

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

Segnala su: Facebook MSDN Social Twitter Digg Segnalo Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl Wikio

TUTORIALS


IN EVIDENZA
MISC