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 以某种方式捕获和处理错误,也会对性能产生影响。如果是这样,我需要采取行动。
因此我的问题是:
- WPF 是否有时会处理 TwoWay 绑定错误,以便应用程序在 TwoWay 绑定不合适的情况下继续工作
- 不恰当地使用 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 属性以避免出现异常。
今天我重新构建了一个 WPF 应用程序 - .NET Framework 4.8 - 我们的测试员回来告诉我出现了一个错误:
A TwoWay or OneWayToSource binding cannot work on the read-only property
错误本身不是问题。我立即认出它是什么,转到有问题的绑定,添加 Mode=OneWay
然后问题就消失了。
但问题来了
原始绑定已在代码中。只是在不同的控件上。它在那里没有引起问题......但是如果它绑定到的 属性 是只读的,它不应该在任何使用它的地方引起问题吗?
这让我如此困扰的原因是我们的测试人员还报告说,在出现错误之前,应用程序似乎“缓慢”。所以我想到在应该使用 OneWay 绑定的地方使用 TwoWay 绑定,即使 WPF 以某种方式捕获和处理错误,也会对性能产生影响。如果是这样,我需要采取行动。
因此我的问题是:
- WPF 是否有时会处理 TwoWay 绑定错误,以便应用程序在 TwoWay 绑定不合适的情况下继续工作
- 不恰当地使用 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 属性以避免出现异常。