Principale différence dans ce cas est que x:Static
ne fonctionne pas convertion plus
De x:Static Markup Extension
Use caution when you make x:Static references that are not directly the type of a property's value. In the XAML processing sequence, provided values from a markup extension do not invoke additional value conversion. This is true even if your x:Static reference creates a text string, and a value conversion for attribute values based on text string typically occurs either for that specific member or for any member values of the return type.
Disons donc que vous
<TextBlock Text="{x:Static SystemColors.ActiveBorderBrush}"/>
cela va provoquer une erreur d'exécution:
'#FFB4B4B4' is not a valid value for property 'Text'.
parce SolidColorBrush
n'est pas String
tout
<TextBlock Text="{Binding Source={x:Static SystemColors.ActiveBorderBrush}}"/>
fonctionnera bien et l'affichage # FFB4B4B4 parce qu'il interprétera ToString()
convertion. En outre, sans Binding
vous n'êtes pas en mesure d'accéder aux propriétés d'instance d'objet statique par exemple, vous ne seriez pas en mesure d'obtenir Color
propriété de cette brosse
<TextBlock Text="{Binding Source={x:Static SystemColors.ActiveBorderBrush}, Path=Color}"/>