【问题标题】:Performance impact: Binding Source vs x:Static性能影响:Binding Source vs x:Static
【发布时间】:2017-07-09 18:53:12
【问题描述】:

如果我以这种方式设置绑定,是否会对性能产生明显影响:

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

而不是这样:

<TextBlock Text="{x:Static SystemColors.ActiveBorderBrush}"/>

?

还是我必须预料到其他缺点?

这里已经描述了不同之处:Binding Source vs x:Static。但是没有关于性能影响/缺点的声明。

【问题讨论】:

  • 第二个示例是否有效?链接的帖子说它会导致运行时错误。异常是一个严重的缺点,不是吗?
  • 好点。也许复制的例子不是那么好。但我的问题更多的是它是否通常会导致问题。一个更好的例子是这样的:"... Label="{Binding Source={x:Static oc:LocalizedText.Data}}" ..." 而不是 "... Label="{x:Static oc: LocalizedText.Data}" ..."
  • @Jean-Claude,Binding Source 与 x:Static 之间的额外区别:绑定可以是 TwoWay(从 .net 4.5 开始,此处显示的示例:stackoverflow.com/a/31611110/1506454

标签: wpf xaml properties binding static


【解决方案1】:

如果我以这种方式设置绑定,对性能有明显的影响吗?

不,没有规定静态属性实际上返回一个值,TextBlockText 属性当然可以设置为 :)

换句话说,这样做之间没有不可忽略的性能差异:

<TextBlock Foreground="{Binding Source={x:Static SystemColors.ActiveBorderBrush}}" Text="Test"/>

...还有这个:

<TextBlock Foreground="{x:Static SystemColors.ActiveBorderBrush}" Text="Test"/>

x:Static 理论上可能更快,因为它不执行任何转换,但我想说,这在 2017 年的计算机上几乎可以忽略不计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2016-05-17
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多