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

C# 降级框架使winforms(xp)上的控件数据绑定失败,c#,.net,winforms,frameworks,C#,.net,Winforms,Frameworks,我在VisualStudio 2013中编写了一个基于.Net 4.5的WinForms应用程序。某些表单使用mvvm模式编写: 视图(带有控件、设计器和空cs文件的窗体) 具有相同表单名称的分部类 作为ViewModel的类 控件通过以下方式绑定到viewmodel: controlName.DataBindigs.Add("controlProperty", model_instance, property_inside_model, false, DataSourceUpdateMod

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

  • 视图(带有控件、设计器和空cs文件的窗体)
  • 具有相同表单名称的分部类
  • 作为ViewModel的类
控件通过以下方式绑定到viewmodel:

controlName.DataBindigs.Add("controlProperty", model_instance, property_inside_model, false, DataSourceUpdateMode.OnPropertyChanged);
甚至一些用户控件也以相同的方式绑定到模型属性

所有这些在4.5版本中都运行良好,但他们要求我将框架降级到4.0版本,因为许多用户仍然使用XP。一旦将应用程序降级到4.0框架,开发人员机器上的一切都很好(Windiows 7 64位)。但是将其发布在目标机器上,即32位虚拟XP上,上述数据绑定不再有效

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

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

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


任何帮助都将不胜感激

我发现了问题所在。只有当我尝试将控件绑定到模型内对象的属性而不是模型的属性时,才会触发上述行为。像
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上运行nice的应用程序和在xp上运行错误时存在相同的问题

多谢大家