首页 > 解决方案 > 升级 .NET 版本后,TwoWay 或 OneWayToSource 绑定无法在只读属性上工作

问题描述

我有目标框架版本为4.5. 现在我已经切换到 version 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:

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

TwoWay 或 OneWayToSource 绑定无法在只读属性上工作

更新 2:

下面的问题类似。

TwoWay 或 OneWayToSource 绑定不能对只读属性起作用

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

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

标签: c#.netwpfframeworksvisual-studio-2017

解决方案


我知道已经晚了一年,但如果有人遇到这个问题,那就是已知问题。框架升级后,我的部分 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

在没有公共 setter 的情况下尝试将数据绑定到属性从来都不是受支持的方案。从 .NET Framework 4.5.1 开始,此方案将引发 InvalidOperationException。请注意,只有专门针对 .NET Framework 4.5.1 的应用才会引发此新异常。如果应用以 .NET Framework 4.5 为目标,则允许调用。如果应用程序不针对特定的 .NET Framework 版本,则绑定将被视为单向。

问题一直存在,只是在发生时才开始抛出异常。


推荐阅读