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

为何仅WPF项目的MainWindow.xaml.cs无法访问Resources.resx资源?

问题原因及解决方案

核心原因

MainWindow类继承自FrameworkElement,而FrameworkElement自带一个名为Resources的内置属性,类型是ResourceDictionary。当你在MainWindow.xaml.cs中写Resources.resourceName时,编译器会优先识别这个内置属性,而非你在Resources文件夹中创建的Resources.resx生成的静态类,因此抛出“ResourceDictionary不包含resourceName定义”的错误。

其他普通类(非WPF控件类)没有这个内置的Resources属性,所以编译器能正确定位到你自定义的Resources.resx生成类,不会出现冲突。

解决办法

1. 使用完整命名空间限定访问

直接用resx生成类的完整命名空间来调用,明确指定要访问的是自定义资源类:

// 替换成你的项目实际命名空间
YourProjectNamespace.Resources.Resources.resourceName

2. 给自定义资源类设置别名

在MainWindow.xaml.cs文件顶部添加别名引用,避免命名冲突:

// 替换成你的项目实际命名空间
using AppRes = YourProjectNamespace.Resources.Resources;

之后就可以通过别名访问资源:

AppRes.resourceName

3. 重命名Resources.resx文件

将Resources.resx改名为其他名称(比如AppResources.resx),这样生成的静态类名会变成AppResources,彻底避免和MainWindow的内置Resources属性重名,直接用AppResources.resourceName访问即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:08:18