You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF项目如何引用类库中内容类型资源字典的URI合并到MergedDictionaries

你之前的写法存在两个问题:一是用application协议引用类库内容文件时未指定类库程序集名,路径无法定位到类库的输出内容;二是siteoforigin协议指向的是主程序运行根目录,你加了../回退到上级目录,自然找不到输出到根目录下的i18N文件夹。按以下步骤配置即可正常引用:

前置配置确认

  • 检查Localization类库中所有.xaml语言文件的属性:
    • 生成操作:内容
    • 复制到输出目录:如果较新则复制
  • 确认主项目已添加Localization类库的项目引用,生成后主程序输出目录下会出现完整的i18N文件夹,包含所有语言文件。

正确的URI写法

方案1:直接用相对路径(最简写法)

内容文件会同步输出到主程序根目录,直接写相对路径即可生效:

<ResourceDictionary Source="i18N/MainWindow.en-US.xaml"/>

方案2:siteoforigin协议标准写法(适配运行时动态切换语言场景)

siteoforigin固定指向主程序运行根目录,不需要额外回退路径:

<ResourceDictionary Source="pack://siteoforigin:,,,/i18N/MainWindow.en-US.xaml"/>

方案3:嵌在类库的引用写法(仅后续需要把语言文件改为嵌入类库、不对外暴露时使用)

如果把语言文件生成操作改为Page,不需要外置修改,可以用带类库标识的application URI:

<ResourceDictionary Source="pack://application:,,,/Localization;component/i18N/MainWindow.en-US.xaml"/>

其中Localization是你的类库程序集名,;component是固定标识,后面跟文件在类库项目中的相对路径。

消除ResourceKey警告

如果运行正常仅设计器报ResourceKey无法解析,你可以把上述资源字典引用添加到App.xaml的MergedDictionaries节点中做全局引用,既可避免每个页面重复配置,也能消除设计器警告。

内容的提问来源于stack exchange,提问作者Johnny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:12:00