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

Downgrade framework made controls databinding fail on winforms (xp)

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

控件以这种方式绑定到视图模型:

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

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

在4.5版本都可以,但是他们要求我降级到4.0版本的FrameWork,因为很多用户还是XP。一旦将应用程序降级到 4.0 框架,一切都在开发人员机器(Windows 7 64 位)中运行良好。但是在目标机器上发布它,一个 32 位虚拟 XP,上面的数据绑定不再有效。

在虚拟XP上安装VS 2010,调试器总是报错: “无法绑定到数据源上的 属性 或列 'propertyname'。 参数名称:dataMember".

所有用户控件都会发生这种情况,并且某些 属性 的 windows 控件会发生这种情况,特别是组合框的 SelectedValue 属性。

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

任何帮助将不胜感激!

我找到问题了。仅当我尝试将控件绑定到模型内部对象的 属性 而不是模型的 属性 时,才会触发上述行为。 model.Name 等属性效果很好,但 model.Customer.Name 等属性效果不佳。我解决了分配问题,作为绑定的数据源,模型的包装器 BindingSource:

而不是这个:

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中的无错误版本相比,仍然存在一些不同类型的错误,使用相同的网络框架,我想知道是否有人有同样的问题应用程序 运行 在 7 上很好,在 xp 上有错误。

感谢大家