绑定到静态类属性

我想将文本块文本绑定到静态类的属性。 每当静态类的属性值改变时,它应该反映到另一个窗口或自定义控件上的文本块。

您可以使用x:Static标记扩展名绑定到静态类上的ANY属性,但如果不执行任何更改跟踪,则可能会导致刷新错误!

<TextBlock Text="{Binding Source={x:Static sys:Environment.MachineName}}" /> 

这对我有效:

 Text="{Binding Source={x:Static MyNamespace:MyStaticClass.MyProperty}, Mode=OneWay}" 

没有Mode=OneWay我有一个例外。

对于那些使用嵌套静态类来组织/分离常量的人。 如果你需要绑定到嵌套静态类,似乎你需要使用加号(+)而不是点(。)运算符来访问嵌套类:

 {Binding Source={x:Static namespace:StaticClass+NestedStaticClasses.StaticVar}} 

例:

 public static class StaticClass { public static class NestedStaticClasses { public static readonly int StaticVar= 0; } }