Caricare un oggetto XAML da file remoto in Silverlight 2.0

di Alessio Leoncini, in Silverlight 2.0,

In Silverlight 2.0 è possibile creare a runtime l'istanza di un controllo elaborando un codice XAML. Il metodo Load della classe statica XamlReader accetta come parametro una stringa che può definire il markup di un controllo o anche di un UserControl complesso. Il codice XAML può essere definito sia nel codice come semplice variabile oppure può anche essere caricato da una risorsa remota.

Nell'esempio procediamo alla definizione del markup di un Button in un file button1.xaml, locato nella root del sito web che ospita l'applicazione.

Per la corretta parserizzazione, il controllo principale deve riportare i namespace relativi al markup XAML.
Nel codice si può procedere al caricamento del file con il metodo DownloadStringAsync della classe WebClient, poichè il contenuto del file può essere interpretato come semplice stringa:

Uri url = new Uri("/button1.xaml", UriKind.Relative);
WebClient client = new WebClient();
client.DownloadStringCompleted += (object sender, DownloadStringCompletedEventArgs e) =>
{
    if (e.Error == null)
    {
        string xaml = e.Result;
        Button button1 = XamlReader.Load(xaml) as Button;
        LayoutRoot.Children.Add(button1);
    }
};
client.DownloadStringAsync(url);

Come noto, il caricamento della risorsa avviene in modo asincrono; al termine dell'operazione, nel metodo gestore dell'evento DownloadStringCompleted, si può recuperare il markup del controllo attraverso la proprietà e.Result.
Una volta assegnata la stringa al metodo Load di XamlReader, viene restituita direttamente l'istanza del controllo principale definito, che può essere utilizzata nel modo tradizione.

Con questa modalità anche un webservice può eseguire le dovute elaborazioni e restituire markup di controlli già completi di informazioni.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi