降级框架使控件数据绑定在 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有什么不同吗?
任何帮助将不胜感激!
我发现了问题。仅当我尝试将控件绑定到模型内对象的属性而不是模型的属性时,才会触发上述行为。像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 上出现错误。
感谢大家