di Alessio Leoncini, in Silverlight 2.0, 30 settembre 2008
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'esempioQuesto 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.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Realizzare un sito in Silverlight 2.0: frontend e animazioni
- Deepzoom in Silverlight 2.0
- ADO.NET Data Service al servizio di Silverlight 2.0
- I controlli di Silverlight 2.0
- Hello Silverlight 2.0, again!
- Principi di programmazione in Silverlight 1.0
- 3, 2, 1: azione! Le animazioni in Silverlight
- XAML per Silverlight - Seconda parte
- XAML per Silverlight - Prima parte
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




















Difficoltà

Stampa
Download



Articolo interessantissimo, veramente utile ... è servito a togliermi molti dubbi!
Continua »»» | Rispondi »»»