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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Le novità dell'October 2018 Update per la Universal Windows Platform
annunciato #netcore 3, .NET Core for Desktop (#WPF, #UWP) e #netfx 4.8 #msbuild http://aspit.co/bny
Nascondere i contenuti con effetto Fade nella Universal Windows Platform
Personalizzare il comportamento della TextBox con la penna nella Universal Windows Platform
Aggiungere il controllo TabView come Microsoft Edge nella Universal Windows Platform
Mantenere l'aspect ratio durante il resize dei contenuti nella Universal Windows Platform
Proteggere e condividere le credenziali nella Universal Windows Platform
Gestione dell'azione predefinita per la pressione dei tag nella Universal Windows Platfotm
Accedere a tutto il file system con la Universal Windows Platform
Clonare un oggetto utilizzando il BinaryFormatter
Notificare il cambiamento dell'Accent color nella Universal Windows Platform
I più letti di oggi
- Blue-green deployment con Azure Web App e DevOps
- Rinominare un file con il FileSystemObject
- Spostare elementi tra liste utilizzando il Drag&Drop e Angular CDK
- Leggere le informazioni dell'app package nella Universal Windows Platform
- C# 8
- Chiamare direttamente un numero di telefono con HTML5
- Rendere sicuro l'endpoint di HealthCheck in ASP.NET Core
- Patch per l'euro nelle valute
- Modern Data Access with .NET Core and Entity Framework Core