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

如何通过WPF LocalizeExtension引用其他项目中的.resx本地化文件?

跨项目使用WPF LocalizeExtension集中管理本地化完全可行!

当然可行!我之前也在多项目WPF方案里用WPF LocalizeExtension做过集中本地化,你遇到的问题大概率是配置写法没搞对,我给你捋捋正确的步骤:

1. 先确认共享本地化项目的基础设置

首先要保证你的Localisation项目里的Resx文件配置正确,这是前提:

  • 找到Strings.resx(以及对应的语言版本如Strings.en-US.resx),右键属性:
    • 生成操作设置为Embedded Resource
    • 访问修饰符设置为Public(必须是Public,否则XAML无法访问到Resx里的资源)
  • 确认Resx的命名空间:如果Resx在Localisation项目的Properties文件夹下,它的命名空间应该是Localisation.Properties(可以在Resx设计器的右上角查看)

2. 正确配置XAML里的LocalizeExtension

你之前的写法问题出在DefaultAssembly和DefaultDictionary的取值上,正确的配置应该是这样:
首先在XAML根节点引入lex命名空间(如果还没加):

xmlns:lex="http://wpflocalizeextension.codeplex.com"

然后设置全局默认的Assembly和Dictionary:

lex:ResxLocalizationProvider.DefaultAssembly="Localisation"
lex:ResxLocalizationProvider.DefaultDictionary="Localisation.Properties.Strings"

关键解释:

  • DefaultAssembly填的是共享项目编译后的程序集名称(就是你Localisation项目的名称,一般和项目名一致,不是带clr-namespace的格式)
  • DefaultDictionary填的是Resx文件的完整命名空间+文件名(不带.resx后缀),比如你的Resx在Localisation.Properties下,文件名是Strings,所以就是Localisation.Properties.Strings

3. 验证基础引用和缓存问题

  • 确保你的主项目(比如Project1)已经添加了对Localisation项目的项目引用(不是直接引用DLL,项目引用更可靠)
  • 先在后台代码测试能不能访问Localisation.Properties.Strings.YourResourceKey,如果能正常获取到值,说明程序集引用和Resx的访问权限没问题
  • 清理整个解决方案,然后重新编译,有时候VS的缓存会导致配置不生效

4. 排查时的备用写法

如果全局配置还是有问题,可以尝试在单个绑定里指定完整路径,来验证是否能找到资源:

<TextBlock Text="{lex:Resx Localisation.Properties.Strings.WelcomeText, Assembly=Localisation}" />

如果这个写法能正常显示,说明全局的DefaultAssembly或DefaultDictionary配置有误,再回头检查步骤2的配置。

按照这些步骤调整后,XAML里应该就能正常引用跨项目的Resx资源了,集中管理本地化的场景完全支持~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:45:56