67

我在将 WPF 绑定到静态属性时遇到了一些问题。在我的应用程序中有一个名为Globals的类,其中包含ThisAddIn的静态属性。这个对象允许我访问一个基本上是我想在绑定中使用的用户属性。所以,我的 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 值无法解析为枚举、静态字段或静态属性。

4

2 回答 2

127

确保Globals.ThisAddIn是公开的。

如果您使用资源文件,您也可能会得到这个,在这种情况下,您还需要确保访问修饰符设置为Public

在此处输入图像描述

于 2013-10-29T19:43:31.720 回答
36

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

将以下替换为...

非公共资源

这个

正确的公共资源

于 2017-04-17T03:05:53.627 回答