降级框架使控件数据绑定在 winforms (xp) 上失败

本文关键字:xp 失败 winforms 框架 控件 数据绑定 降级 | 更新日期: 2023-09-27 18:36:51

我在VisualStudio 2013中编写了一个基于.Net 4.5的WinForms应用程序。有些表单是使用 mvvm 模式编写的:

  • 视图(包含控件、设计器和空 cs 文件的窗体)
  • 具有相同窗体名称的分部类
  • 作为视图模型的类。

控件按以下方式绑定到视图模型:

controlName.DataBindigs.Add("controlProperty", model_instance, property_inside_model, false, DataSourceUpdateMode.OnPropertyChanged);

甚至某些用户控件也以相同的方式绑定到模型属性。

在 4.5 版本中一切正常,但他们要求我降级到 4.0 版本的 FrameWork,因为许多用户仍然拥有 XP。一旦将应用程序降级到4.0框架,开发人员机器(Windiows 7 64位)中一切正常。但是将其发布在目标机器上,一个 32 位虚拟 XP,上述数据绑定不再起作用。

在虚拟XP上安装VS 2010时,调试器总是抱怨:"无法绑定到数据源上的属性或列'属性名称'。参数名称:数据成员"。

所有用户控件以及窗口控件的某些属性(特别是组合框的 SelectedValue 属性)都会发生这种情况。

会发生什么?VS 2013的.net Framework 4.0与XP上安装的.net Framework 4.0有什么不同吗?

任何帮助将不胜感激!

降级框架使控件数据绑定在 winforms (xp) 上失败

我发现了问题。仅当我尝试将控件绑定到模型内对象的属性而不是模型的属性时,才会触发上述行为。像model.Name等属性效果很好,但像model.Customer.Name这样的属性则不然。我修复了将模型的包装器(绑定源)作为绑定的数据源分配的问题:

取而代之的是:

control.DataBindings.Add(control_property, model, "ObjectInstance.Property"`, false, DataSourceUpdateMode.OnPropertyChanged)

我写了这个:

Bindingsource bs = new BindingSource(model, null);
control.DataBindings.Add(control_property, bs, "ObjectInstance.Property", false, DataSourceUpdateMode.OnPropertyChanged)

它奏效了。

希望这可以帮助有同样问题的人。

但是,由于与 vs2013-windows7 中的无错误版本相比,仍然存在一些不同类型的错误,使用 SAME 网络框架,我想知道是否有人在应用程序上运行良好时遇到同样的问题在 7 上运行良好,而在 xp 上出现错误。

感谢大家