我在使用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值解析为枚举、静态字段或静态属性。
Path=
和Member=
,因为这将调用相应设置相关属性的构造函数。 - H.B.{Binding Source={x:Static local:MyStaticClass.SomeStaticProperty.PropertyName}
绑定到静态类/属性。只需确保您的属性具有get
/set
访问器即可。例如,请确保您使用public string PropertyName { get; set; }
而不是public string PropertyName;
。 - RachelPropertyName
。{Binding PropertyName, Source={x:Static local:MyStaticClass.SomeStaticProperty}
- Rachel