2

我有我的主应用程序,它使用另一个项目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.

我有TranslationExtensionMarkupExtension 的一个子类(它当然是公共的)。

我重建了整个解决方案——没有改变。

4

1 回答 1

2

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

(可能的情况:XAML 编译器需要读取扩展,因为它们来自当前程序集,所以它有问题,因为当前程序集尚未构建,因为 XAML 未编译 = 关闭循环;不要试图强行修复它. 有可能,编译器可能会被愚弄来阅读“旧/以前”版本的程序集,但这会导致哦其他许多邪恶且难以追踪的问题..)。

如果您已经在其他组件中拥有它,请确保xmlns:loc指向clr-namespace:TranslationByMarkupExtension;assembly=MyAssemblyWithTheExtension,也许您只是忘记了该assembly零件。

于 2014-11-17T10:59:12.447 回答