绑定到静态类属性
在使用嵌套静态类来组织/分离常量的情况下,如果你需要绑定到嵌套的静态类,似乎需要使用加号(+)运算符而不是点(.)运算符来访问嵌套的类:
{Binding Source={x:Static namespace:StaticClass+NestedStaticClasses.StaticVar}}
示例:
public static class StaticClass { public static class NestedStaticClasses { public static readonly int StaticVar= 0; } }
这对我帮助很大,谢谢!是否有官方文档的链接来描述这个问题?
静态类的属性可以使用x:Static标记扩展进行绑定,但是如果它们没有实现任何更改跟踪,可能会导致刷新时出现错误!
例如:<TextBlock Text="{Binding Source={x:Static sys:Environment.MachineName}}" />
也就是说,属性的setter需要引发PropertyChanged事件,就像任何绑定属性一样,才能正确刷新。
为了使代码片段工作,你需要在
对于静态属性的PropertyChanged事件,我们发送什么作为sender参数?null?
通常情况下,对于静态属性,null可能是合适的;参见stackoverflow.com/questions/41519386/...
即使实现了静态属性通知,Source+x:Static并不能实现通知,你必须使用Path:<TextBlock Text="{Binding Path=(local:Foo.StaticBar)}"/>