Utilizzare più namespace personalizzati in XAML

di Cristian Civera, in Windows Presentation Foundation, XAML,

Nello script #1 si è visto come sia possibile utilizzare le proprie classi direttamente in XAML. Quando le classi diventano molteplici, così come i namespace personalizzati, diventa scomodo mappare ogni namespace indicando anche ripetutamente il nome degli assembly.

WPF permette di dichiarare all'interno degli assembly, che vengono usati poi come librerie, quali namespace .NET raggruppare sotto un namespace XML. Per farlo occorre aggiungere l'attributo System.Windows.Markup.XmlnsDefinition a livello di assembly, posto solitamente nel file AssemblyInfo.cs.

Nell'esempio seguente si mappano due namespace .NET sotto un unico namespace XML:

[assembly: XmlnsDefinition("http://schemas.aspitalia.com/XScripts/CustomControlLibrary", "ASPItalia.com.XScripts.CustomControlLibrary")]
[assembly: XmlnsDefinition("http://schemas.aspitalia.com/XScripts/CustomControlLibrary", "ASPItalia.com.XScripts.CustomControlLibrary.SubControls")]

Successivamente, basta referenziare la libreria all'interno dell'applicazione che ne deve fare uso, mentre nel file XAML occorre indicare solo il namespace XML precedentemente indicato. Non occorre specificare il nome dell'assembly ed è possibile sfruttare più classi situate in namespace .NET diversi mediante il medesimo prefisso:

<Window x:Class="TestClient.Advance"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="http://schemas.aspitalia.com/XScripts/CustomControlLibrary"
    Title="Advance" Height="302" Width="418">
    <StackPanel>
        <c:UserControl1 />
        <c:UserControl2 />
    </StackPanel>
</Window>

E' interessante notare che questa tecnica è usata dal WPF stesso, con la quale raggruppa sotto http://schemas.microsoft.com/winfx/2006/xaml/presentation diversi namespace .NET. E' inoltre possibile rendere i propri namespace personalizzati come namespace di default mediante l'attributo xmlns senza essere seguito dal prefisso, come permesso dallo standard XML.

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