WPF窗体绑定内部资源报错,是否必须将资源设为公开?
问题解答:XAML中访问internal静态资源的权限限制
是的,你必须将资源(或者至少是要在XAML中引用的静态成员)设置为public才能让XAML正常访问它,这是WPF XAML解析器的权限规则决定的。
为什么后台C#能访问但XAML不行?
- 你的C#代码和
internal资源处于同一个命名空间(也就是同一个程序集),C#的internal权限本来就允许同一程序集内的代码访问这些成员,所以后台代码调用完全没问题。 - 但WPF的XAML解析器在处理静态资源引用时,遵循的是公共成员访问规则——它只能识别并访问
public修饰的静态字段或属性,无法读取internal级别的成员。这就是你遇到XamlParseException(内部提示无法解析静态值)的根本原因。
解决建议
如果不想把整个资源类改成public,至少要把需要在XAML中绑定的静态成员(比如你的Resource1.String1)修改为public;不过通常来说,把资源类本身设为public会更符合WPF资源的使用习惯,方便后续在其他XAML文件或组件中复用。
内容的提问来源于stack exchange,提问作者Malior
相关产品推荐
相关产品推荐

