J'ai créé une extension de balisage:Comment remapper correctement mon espace de noms XAML?
namespace Utils
{
public class CoolExtension : MarkupExtension
{
private string key;
public CoolExtension()
{
}
public CoolExtension(string key)
{
this.key = key;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return "!"+key+"!";
}
}
}
Ensuite, j'ai ajouté dans le AssemblyInfo le XmlnsDefinitionAttribute remapper l'espace de noms Utils à défaut-namespace, de sorte que je ne pas besoin d'un espace de noms pour utiliser l'extension de balisage:
[assembly: XmlnsDefinitionAttribute("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "Utils")]
Enfin, dans ma fenêtre je l'extension:
<Button Content="{Cool test}" />
le XAML Editor souligne ne pas quoi que ce soit pour afficher une erreur et le XAML-Designer montre la sortie comme prévu (un bouton avec "! test!" comme contenu).
Mais il ne compile pas! Dans la liste des erreurs j'ai le message que "Cool" n'a pas été trouvé dans l'espace de nom http://schemas.microsoft.com/
Qu'est-ce que je fais mal (pour se débarrasser de l'espace de noms pour mon extension)?
C'est vrai. Vous devez simplement placer votre extension de balisage et la définition de l'espace de noms XAML dans un autre assembly, puis la référencer dans l'assembly où vous souhaitez l'utiliser dans XAML. J'utilise cette solution de contournement tout le temps. – user1018735