WPF 是否抑制只读属性的双向绑定错误?

Does WPF suppress TwoWay binding errors on read-only properties?

今天我重新构建了一个 WPF 应用程序 - .NET Framework 4.8 - 我们的测试员回来告诉我出现了一个错误:

A TwoWay or OneWayToSource binding cannot work on the read-only property

错误本身不是问题。我立即认出它是什么,转到有问题的绑定,添加 Mode=OneWay 然后问题就消失了。

但问题来了

原始绑定已在代码中。只是在不同的控件上。它在那里没有引起问题......但是如果它绑定到的 属性 是只读的,它不应该在任何使用它的地方引起问题吗?

这让我如此困扰的原因是我们的测试人员还报告说,在出现错误之前,应用程序似乎“缓慢”。所以我想到在应该使用 OneWay 绑定的地方使用 TwoWay 绑定,即使 WPF 以某种方式捕获和处理错误,也会对性能产生影响。如果是这样,我需要采取行动。

因此我的问题是:

  1. WPF 是否有时会处理 TwoWay 绑定错误,以便应用程序在 TwoWay 绑定不合适的情况下继续工作
  2. 不恰当地使用 TwoWay 绑定会不会对性能造成重大影响,我应该解决这个问题吗?

Does WPF sometimes handle TwoWay binding errors so that the application continues to work even if the TwoWay binding is inappropriate

在 .NET Framework 4.5.1 之前是这样。自此更新以来,它抛出一个 InvalidOperationException 确切地说“TwoWay 或 OneWayToSource 绑定无法在 read-only 属性 上工作”。

Can using TwoWay binding inappropriately cause a significant performance impact and should I address it?

没有。但是您显然应该避免 TwoWay 绑定到 read-only 属性以避免出现异常。