c# - 如何使自定义 MarkupExtension 从 XAML 文件可见/可访问?

标签 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 的子类(当然它是公共(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/

相关文章:

c# - 在asp.net mvc中通过ajax上传带有其他参数的文件

c# - Xamarin 表格 : StackLayout inside RelativeLayout is not filling the whole screen

wpf - 将焦点矩形应用于子元素

c# - 是否可以仅在单击按钮时使用 XAML 启动另一个 View ?

c# - 为 .NET 4 和 .NET 4.5 构建整个解决方案并将文件复制到特定文件夹

c# - 回发中丢失的数据

c# - Stream.CopyTo() 方法可以保存不完整的流吗?

c# - 如何从数据库列文件路径制作 TreeView

visual-studio-2012 - 发布配置在 VS 2012 中不可用

c# - visual studio XAML 设计器未加载