Utilizzare classi personalizzate in XAML

di Cristian Civera, in Windows Presentation Foundation, XAML,

XAML è il linguaggio basato su XML che permette di descrivere il layout delle applicazioni sviluppate per Windows Presentation Foundation, ma che in generale permette di dichiarare delle classi, impostare proprietà con tipi semplici o complessi, in un modo comprensivo sia all'uomo che agli strumenti di disegno.
Quando un'applicazione cresce, è molto probabile che si debba ricorrere a controlli personalizzati che magari ridefiniscono quelli già presenti in WPF oppure sono dei semplici tipi, come Brush, Enum, ecc. Poiché XAML utilizza le regole di XML è permesso dichiarare un nuovo namespace XML ed associarlo ad uno specifico namespace .NET.

Se per esempio si dispone di una classe di nome UserControl1 contenuta nel namespace ASPItalia.com.XScripts.Text, occorre dichiarare il prefisso nel seguente modo:

<Window x:Class="TestClient.Simple"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:ASPItalia.com.XScripts.Text">

</Window>

Non è obbligatorio dichiarare il namespace XML a livello di root e il prefisso è libero, ma basta sapere che i nodi figli possono adottarlo e fare riferimento a qualsiasi classe come tag contenuta nel namespace .NET specificato dopo clr-namespace.

Ecco quindi un esempio di utilizzo del controllo personalizzato:

<c:UserControl1 />

Ci sono situazioni in cui il namespace che si vuole mappare è situato in un altro assembly. In questo caso occorre anche specificare l'assembly completo di strong name (non ci devono essere spazi):

<Window x:Class="TestClient.Simple"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:ASPItalia.com.XScripts.CustomControlLibrary;assembly=CustomControlLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"
    Title="Simple" Height="302" Width="418">

    <StackPanel>
        <c:UserControl1 />
    </StackPanel>

</Window>

Nell'allegato è presente un esempio completo che mostra questa tecnica.

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

I più letti di oggi