如何从XAML文件中查看/访问自定义MarkupExtension?

时间:2014-11-17 10:51:29

标签: c# xaml visual-studio-2012 markup-extensions

我的主应用程序使用MarkupExtension的另一个项目。我添加了引用,我也在XAML文件中添加了它,但是当我尝试使用它时,我收到错误:

error MC3048: '{loc:Translate View3dDialog}' value is not a valid MarkupExtension expression. 
Cannot resolve 'Translate' in namespace 'clr-namespace:TranslationByMarkupExtension'.
'Translate' must be a subclass of MarkupExtension. Line 7 Position 9.

我有TranslationExtension 是MarkupExtension的子类(当然是公开的)。

我重建了整个解决方案 - 没有变化。

1 个答案:

答案 0 :(得分:2)

我假设您xmlns:loc指向clr-namespace:TranslationByMarkupExtension?该命名空间是否在同一个程序集中?如果是这样,那么你可能会遇到VS(不)能够读取更新的程序集的问题,因为程序集尚未构建。您可以尝试将扩展提取到另一个程序集,该程序集将与使用XAML的程序集分开编译/构建。

(可能的情况:XAML编译器需要读取扩展,因为它们来自当前程序集,它有问题,因为当前的程序集还没有构建,因为XAML没有编译=关闭循环; 做不是尝试强有力地解决这个问题。有可能,编译器可以被愚弄阅读"旧/先前"版本的程序集,但这会导致许多其他邪恶和难以追踪的问题..)。

如果您已在其他程序集中使用它,请确保xmlns:loc指向clr-namespace:TranslationByMarkupExtension;assembly=MyAssemblyWithTheExtension,可能您只是忘记了assembly部分。