Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF: utilizzare gli XML Literals di Visual Basic per dichiarare controlli in forma di XAML

Nel forum WPF di VB T&T si è parlato oggi di come sfruttare gli XML literals di Visual Basic 2008 per definire dei controlli sotto forma di XElement per poi esportarli come XAML ed utilizzarli nell’interfaccia. Circa un anno fa(!) parlammo, in questo post, di come fare una cosa del genere salvando però il file .Xaml su disco e poi ricaricandolo.

 

In realtà possiamo definire un controllo da codice anche senza passare da file esterni. Tipicamente questo scenario si ha quando si vogliono generare controlli in modo dinamico a run-time, quindi vi rimando al precedente post per informazioni sull’utilizzo delle embedded expression che ci consentono di fare questa operazione. In questa sede ci interessa in modo particolare capire come utilizzare il parsing dello XAML.

 

Supponiamo di avere un Button definito tramite gli XML Literals ed assegnato a un oggetto XElement, in questo modo:

 

        Dim testControl = <Button Width="100" Height="50" Name="Button1">Test</Button>

 

Per convertirlo in un controllo WPF utilizzabile nell’applicazione, è necessario che l’XML sia interpretato come XAML. Per fare questo, è necessario importare i namespace Xml di WPF che fanno sì che l’XML contenuto nel nostro XElement possa essere confrontato con gli schemi propri di WPF:

 

Imports <xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">

Imports <xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

 

Ora possiamo scrivere la seguente riga, che fa proprio ciò che ci occorre:

 

        Dim myButton = CType(System.Windows.Markup.XamlReader.Parse(testControl.ToString), Button)

 

In particolare, il metodo statico XamlReader.Parse analizza una stringa (per tale motivo il contenuto del nostro XElement viene convertito in String) e restituisce il corrispondente XAML sotto forma di Object. Poiché sappiamo a priori che si tratta di un Button, eseguiamo anche la conversione.

 

A questo punto possiamo aggiungere il controllo all’interfaccia, per esempio in questo modo:

 

        Me.Grid1.Children.Add(myButton)

 

Eventualmente potremmo utilizzare delle istruzioni AddHandler per attivare la gestione degli eventi che ci interessano.

 

Alessandro

Print | posted on lunedì 29 giugno 2009 02:30 | Filed Under [ Visual Basic Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET