【发布时间】:2013-06-06 02:31:02
【问题描述】:
我们已经使用 WinForms 数据绑定几个月了,遇到了一些问题:
- 缺乏强类型
- 无法将控件绑定到复杂属性(模型/模型集合)
- 难以为空值和特殊要求自定义行为
- 创建膨胀解决方案的 .datasource 文件
- 作为“黑匣子”运行 - 难以诊断问题或调整功能
我们正在考虑构建一个为我们的用户控件和模型定制的数据绑定实用程序。这将通过 lambda 函数进行强类型化,能够绑定复杂的属性,并允许我们需要的任何其他特殊功能。绑定可能会发生大致如下:
var binder = new Binder<Person>();
binder.Bind (p => p.FirstName, FirstNameText);
binder.Bind (p => p.Surname, SurnameText);
binder.Bind (p => p.BirthDate, BirthDatePicker);
binder.Bind (p => p.PersonType, PersonTypePicker); <-- Binds direct to PersonType model – not PersonTypeId value
binder.Bind (p => p.Interests, InterestsPicker); <-- Binds collection property to control’s collection property (automatically sync’s contents)
binder.DataSource = _selectedPerson;
问题:
1) 是否推荐这种方法,还是存在缺陷?
2) 是否有第三方实用程序已经完成所有这些操作?
3) 您如何处理项目中复杂的数据绑定要求?
【问题讨论】:
标签: c# winforms data-binding strong-typing