【问题标题】:How to make custom MarkupExtension visible/accessible from a XAML file?如何使自定义 MarkupExtension 从 XAML 文件可见/可访问?
【发布时间】:2014-11-17 10:51:29
【问题描述】:

我的主应用程序使用另一个项目 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 的子类(当然是公开的)。

我重建了整个解决方案——没有任何变化。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢,确实忘记加assembly部分了。
    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2012-12-13
    • 2014-03-17
    • 2021-08-07
    相关资源
    最近更新 更多