【问题标题】:Add a WPF XAML resourcedictionary to a DLL将 WPF XAML 资源字典添加到 DLL
【发布时间】:2015-03-13 02:10:22
【问题描述】:

也许我误解了这一切是如何工作的,你不能真正将普通的旧 XAML 文件作为数据填充到 DLL 中,以便以后获取 - 但我认为这是可能的。

我已经一遍又一遍地尝试了大约五个小时才能让它工作,所以我终于问 Stack Overflow。

我在 WPF 用户控件库项目中有一个 XAML 文件。在一个完美的世界中,我应该能够以某种方式将此 XAML 文件嵌入到 DLL 中,以便在另一个项目中引用。如果可能的话,我不想链接到原始项目文件夹或类似的东西,只是为了让所有东西都在一个地方保持美观和简单。

以下是困扰我的问题:

  1. 如果您在编译 DLL 时项目中的一个文件的编译模式设置为“资源” - 该文件是否真的被填充到 DLL 中?如果没有 - 有没有办法做到这一点?

  2. 假设我的资源文件在类库项目中的路径是这样的:

    “MyClassLibrarySolutionRoot/StyleXAMLs/Styles.xaml”

应用文件中的URI路径我该放什么:

     <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="What on earth am I supposed to put here?"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

提前致谢!仅供参考,这个特殊的问题让我对尝试学习 XAML 感到有些不安,因为无法使其正常工作真的破坏了我喜欢的工作流程,基本上除了基本应用程序的代码之外的所有东西都扔到了类库中。那么,也许您可​​以通过向我保证我仍然可以轻松使用和引用 DLL 来恢复我对 XAML 的信心?

PS...我一遍又一遍地尝试这种 URI 的确切格式,但它不起作用:pack://application:,,,/externalDllName;component/path/dictionary.xaml

“组件”应该是“组件”这个词还是应该是“ResourceDictionary”之类的其他词?该“路径”应该是原始 DLL 项目中的文件夹名称还是其他名称?

在这里,我决定附上一张图片,因为我不知道自己做错了什么:

【问题讨论】:

  • 尝试运行你的应用,看看是否有问题。
  • 是的,我试过了...引发解析错误...
  • @nguyen Kien Crud - 我刚刚意识到它会将解析错误抛出到我忘记存在于类库中的不同 URI 上 - 我讨厌这些非特定的解析错误......

标签: c# wpf xaml dll resourcedictionary


【解决方案1】:

好吧,尽管听起来很愚蠢,但我没有仔细观察,最后发现它在类库的完全不同部分的 URI 上引发了解析错误。

导致我被误导的原因是试图将资源字典添加到 App.xaml。 IDE 不断给我错误“该项目未引用程序集”,这让我相信解析错误是 URI 与基础错误的结果,我什至没有停下来考虑它是 C# 代码中的 URI在引发解析错误的类库中。

很抱歉在这里浪费了人们的时间 - 但要吸取的小教训如下:

Visual Studio 在尝试在 XAML 代码中引用外部程序集时偶尔会给出错误错误,这可能会导致您在解析异常时查看错误的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多