【问题标题】:Default Binding changed for checkbox after upgrade to VS2013 and .NET 4.5.1?升级到 VS2013 和 .NET 4.5.1 后复选框的默认绑定是否更改?
【发布时间】:2013-11-04 15:09:59
【问题描述】:

将用 VS2012 编写的针对 .NET 4.5 的项目升级到 VS2013 .NET 4.5.1 后,绑定到我的复选框会引发无效操作异常:TwoWay 或 OneWayToSource 绑定无法在只读属性上工作 em>

<CheckBox IsHitTestVisible="False" Focusable="False" Content="Invert TXD" IsChecked="{Binding EepromDataModel.InvertTxd}"/>

添加正确的模式(OneWay)后,它运行良好。

默认绑定模式是改变了还是比以前更严格了?

不要误会我的意思。我之前应该添加那个绑定模式,但我只是想知道......

编辑

属性没有改变。它总是有一个私人二传手。我只做了升级,仅此而已。 我刚刚用 VS2012 的代码再次检查了四次,它运行良好,没有抛出任何异常。

【问题讨论】:

  • 据我所知。您确定您没有将视图模型上的字段更改为私有集吗?
  • 它之前确实有一个私人二传手。
  • 在我看来像是一个错误修复,尽管它可能破坏了您的代码。 CheckBox 是可编辑的 UI 元素(如 TextBox),而不是最终用户不可编辑的只读 UI 元素(如 TextBLOCK),双向绑定是最有意义的默认选项。
  • 确实更有意义。就像我说的,我应该在之前添加 OneWay 绑定模式(一定忽略了这一点),但我只是想知道是否发生了一些变化。
  • 我也遇到了同样的问题,尤其是 DevExpress WPF 控件

标签: wpf xaml binding visual-studio-2013


【解决方案1】:

您在 4.5 中引入的 .net 框架中发现了一个安全漏洞。私有 setter 不应该处理 TwoWay 绑定的数据绑定。在以下问题中,微软对此问题发表了评论:

Connect bug two way databinding on private methods

Security update for two way binding on private methods

【讨论】:

  • 感谢同行。似乎@HighCore 在他的评论中是正确的。感谢您的跟进。一个老问题很少得到答案。为此 +1。
  • 我们想知道这种行为并找到了您的问题和原因。然后连接以供将来参考。
猜你喜欢
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多