XAML 无法解析StaticExtension值

bksxznpy  于 2023-01-22  发布在  其他
关注(0)|答案(3)|浏览(162)

WPF绑定到静态属性时,我遇到了一些问题。在我的应用程序中,有一个名为Globals的类,它包含ThisAddInstatic 属性。此对象允许我访问User属性,这基本上是我希望在绑定中使用的属性。因此,我的XAML如下所示:

<TextBlock Text="{Binding Path=User.Name
                   , Source={x:Static Member=s:Globals.ThisAddIn}}" />

名称空间s在顶部由以下行声明:

xmlns:s="clr-namespace:ConsoleApplication16.Model"

我发现了很多不同的方法来引用XAML中的静态属性,但是除了这一种方法,没有一种方法有效,这对我来说似乎也是最合理的。我发现的一些示例根本没有使用Path或Member。
经过一些测试后,我发现正确的方法是使用“x:Static Member”来定义类和要使用的静态属性,而Path则在此对象中定义正确的属性,就像普通绑定一样。
尽管这个解决方案编译时没有任何抱怨,但是会弹出一个XAMLParseException,直接告诉我**StaticExtension值无法解析为枚举、静态字段或静态属性。

c9qzyr3d

c9qzyr3d1#

确保Globals.ThisAddIn是公共的。
如果您使用的是资源文件,也可能会得到这样的结果,在这种情况下,您还需要确保将访问修饰符设置为Public

6vl6ewon

6vl6ewon2#

在输出库项目中,应确保默认情况下Resources.resx文件的生成器已修改为PublicResXFileCodeGenerator,而不是ResXFileGodeGenerator。

以下内容改为.

这个

flseospp

flseospp3#

也有可能发生这样的情况,尽管上面的每一个步骤都考虑到了,而且都是正确的(尤其是将Access Modifier设置为public),但是在开发过程中,您添加了一些资源,例如一个翻译后的字符串,并且这个新资源抛出了异常,而来自同一个资源的其他资源却工作正常。
在这种情况下,“清理”相应的项目并“重建”它可能会有所帮助。“清理”是匹配器!右键单击项目并从上下文菜单中选择“清理”。而不是“重建”或“构建”。
这对我几乎每次都有效。

相关问题