升级.NET版本后,TwoWay或OneWayToSource绑定无法在只读属性上运行

时间:2018-09-03 06:52:40

标签: c# .net wpf frameworks visual-studio-2017

我有目标框架版本为4.5的WPF应用程序。现在,我已切换到4.6.2版。

在那之后,我在多个地方出现以下错误。

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

我正在使用Visual Studio 2017

将项目命名为A,该项目具有B, C, D as dependencies。当B,C和D附加as DLL时,我得到了错误。如果已附加as projects,则不会出现错误。

  

注意:所有B,C,D均为4.5版本的项目,我不会将其更改为4.6.2以运行此项目。

任何人都可以向我介绍如何继续进行操作,以及处理方式是否有误?

  

更新1:

相关问题与我的情况不同:

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

  

更新2:

以下问题类似。

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

但是答案中提供的链接似乎已损坏或重定向:

https://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding

1 个答案:

答案 0 :(得分:1)

我知道已经晚了,但是如果有人遇到这个问题,那就是已知问题。框架升级后,我的部分UI开始引发InvalidOperationException。修复很容易,只需将显式Mode = OneWay添加到绑定中即可。但是我仍然需要知道为什么如果在相当长的一段时间内没有人更改任何代码,为什么它会开始。

我在这里找到了解决方法:https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/retargeting/4.5-4.6.1#two-way-data-binding-to-a-property-with-a-non-public-setter-is-not-supported

在没有公共设置器的情况下尝试将数据绑定到属性从未受到支持。从.NET Framework 4.5.1开始,此方案将引发InvalidOperationException。请注意,仅针对.NET Framework 4.5.1的应用程序将引发此新异常。如果应用程序针对.NET Framework 4.5,则将允许该调用。如果应用程序未针对特定的.NET Framework版本,则绑定将被视为单向。

问题总是存在的,它只是在发生异常时才开始抛出异常。