Wpf 绑定源vs x:静态

Wpf 绑定源vs x:静态,wpf,binding,properties,static,Wpf,Binding,Properties,Static,在WPF中,可以绑定到静态属性。现在我知道了两种方法: Content="{x:Static stat:Statics.CurrentUser}" 或: 这两种方法之间有什么区别吗?这种情况下的主要区别是x:Static不执行额外的转换 从 在创建与属性值的类型不直接相关的x:Static引用时请小心。在XAML处理序列中,标记扩展提供的值不会调用附加值转换。即使您的x:Static引用创建了一个文本字符串,并且基于文本字符串的属性值的值转换通常针对该特定成员或任何返回类型的成员值发生,这也是

在WPF中,可以绑定到静态属性。现在我知道了两种方法:

Content="{x:Static stat:Statics.CurrentUser}"
或:


这两种方法之间有什么区别吗?

这种情况下的主要区别是
x:Static
不执行额外的转换

在创建与属性值的类型不直接相关的x:Static引用时请小心。在XAML处理序列中,标记扩展提供的值不会调用附加值转换。即使您的x:Static引用创建了一个文本字符串,并且基于文本字符串的属性值的值转换通常针对该特定成员或任何返回类型的成员值发生,这也是正确的

所以,让我们假设你是这样做的

<TextBlock Text="{x:Static SystemColors.ActiveBorderBrush}"/>
将正常工作并显示#FFB4,因为它将执行
ToString()
转换。此外,如果没有
绑定
,您将无法访问静态对象的实例属性,例如,您将无法获取该笔刷的
颜色
属性

<TextBlock Text="{Binding Source={x:Static SystemColors.ActiveBorderBrush}, Path=Color}"/>

<TextBlock Text="{Binding Source={x:Static SystemColors.ActiveBorderBrush}}"/>
<TextBlock Text="{Binding Source={x:Static SystemColors.ActiveBorderBrush}, Path=Color}"/>