WPF et déclarations de namespaces
Lorsqu’un projet WPF devient complexe, on commence à surcharger les espaces de noms pour pouvoir utiliser nos contrôles. Voici un simple projet de contrôles:

Rien que pour ces 2 contrôles qui sont dans des espaces de noms différents je suis obligé de déclarer ceux-ci dans toute fenêtre ou contrôle qui en ont besoin:

C’est franchement pas pratique: avec cette méthode, si je veux avoir une bibliothèque organisé par espace de nom et facilement utilisable, je suis obligé d’avoir un espace de nom xaml pour chaque espace de nom .Net.
La solution à ce problème est l’utilisation de l’attribut XmlnsDefinitionAttribute: on va pouvoir définir une url comme espace de nom, exactement comme les contrôles natifs de Microsoft:
[assembly: XmlnsDefinition("http://blogs.developpeur.org/miiitch/wpf","MyControlLibrary")]
[assembly: XmlnsDefinition("http://blogs.developpeur.org/miiitch/wpf", "MyControlLibrary.Admin")]
Comme on peut le voir, je peux définir la même url pour plusieurs espaces de nom .Net. Ainsi le xaml est simplifié, et il n’y a plus de référence à l’espace de nom de l’assembly d’origine:

Comme l’espace de nom de la bibliothèque d’origine a disparu, cela signifie aussi que le refactoring sur les contrôles est possible sans avoir à modifier le xaml.
@+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :