我的主应用程序使用另一个带有 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 的子类(当然它是公共(public)的)。
我重建了整个解决方案——没有变化。
最佳答案
我假设您有一个 xmlns:loc
指向 clr-namespace:TranslationByMarkupExtension
?该命名空间是否在同一个程序集中?如果是这样,那么您可能会遇到 VS 无法读取更新后的程序集的问题,因为该程序集尚未构建。您可以尝试将扩展提取到另一个程序集,该程序集将与带有 XAML 的程序集分开编译/构建。
(可能的情况:XAML 编译器需要读取扩展,并且由于它们来自当前程序集,因此存在问题,因为当前程序集尚未构建,因为 XAML 未编译 = 闭环;do不要尝试强行修复这个问题。编译器有可能被欺骗去读取程序集的“旧/以前”版本,但这会导致许多其他邪恶且难以追踪的问题..)。
如果您已在其他程序集中使用它,请确保 xmlns:loc
指向 clr-namespace:TranslationByMarkupExtension; assembly=MyAssemblyWithTheExtension
,也许您只是忘记了 >装配
部分。
关于c# - 如何使自定义 MarkupExtension 从 XAML 文件可见/可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26970994/