我创建了一个标记扩展:
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+"!";
}
}
}
接下来,我在 AssemblyInfo 中添加了 XmlnsDefinitionAttribute 以将命名空间 Utils 重新映射到 Default-Namespace,这样我就不需要命名空间来使用标记扩展:
[assembly: XmlnsDefinitionAttribute("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "Utils")]
最后,在我的窗口中,我使用了扩展名:
<Button Content="{Cool test}" />
XAML 编辑器不会在任何内容下划线以显示错误,并且 XAML 设计器按预期显示输出(带有“!test!”作为内容的按钮)。
但它不编译!在错误列表中,我的消息是在命名空间http://schemas.microsoft.com/中找不到“Cool”
我做错了什么(摆脱我的扩展名的命名空间)?