A volte si rende necessario importare un namespace per poter utilizzare un proprio tipo in XAML.
Se ad esempio avessimo una classe
namespace PlayWithSTYLE.Item
{
public class Person
{
public string Name { get; set; }
public string SName { get; set; }
}
}
nel caso in cui faccia parte dello stesso Assembly dello xaml per poterla utilizzare si deve aggiungere il riferimento al Namespace

(local è il prefisso per il mapping del namespace PlayWithXMLNS.Oject.Item che ci permetterà di accedere alle classi).
A questo punto possiamo utilizzare la nostra classe:

e associarla a qualche controllo

Se si vuole invece far riferimento a un namespace di una dll esterna è necessario definire anche l’assembly (in questo caso l’assembly esterno si chiama EXTClass).


Così facendo però leghiamo il XAML anche al nome dell’assembly oltre che al namespace: per evitarlo, l’assembly esterno deve definire l’attributo System.Windows.Markup.XmlnsDefinition che permette di associare un xmlNameSpace al nostro clrNamespace.
[assembly: XmlnsDefinition("MyExtClass", "EXTClass.Object.Item")]
Così ora per far riferimento al namespace EXTClass.Object.Item dell’assembly esterno EXTClass è sufficiente:
![]()
Da notare però che questo attributo funziona solo tra assembly diversi per via dell’ordine di compilazione degli elementi come spiegato qui.