使用ViewModel Winforms数据绑定

时间:2010-02-12 09:46:19

标签: c# .net winforms data-binding domain-driven-design

我有一个表示mydatabase表的类列表,例如Address,Client。

我的GUI往往是数据网格和数据输入表单。这适用于单表数据输入,但我现在有一个包含客户信息及其地址的表单。

我正在考虑使用ViewModel组合Address和Client类,并将其分配给bindingsource并将我的控件绑定到该类。

如何将控件绑定到属性名称?这会有用......

if (txtLine1.DataBindings.Count == 0)
                txtLine1.DataBindings.Add("Text", bindingSource, "Address.Line1", false, DataSourceUpdateMode.OnPropertyChanged);

Winform数据绑定甚至可以使用ViewModel吗?

2 个答案:

答案 0 :(得分:2)

我创建了一个ViewModel,然后在VS中创建了一个DataSource。然后我将viewmodel中类的属性拖到窗体中,这就创建了我需要的控件。然后,我在viewmodel中为每个类调用Save方法。

答案 1 :(得分:1)

如果你正在使用VS设计器,你可以使用控件的数据绑定属性设置绑定 - 让样板代码由VS生成,如果没有绑定设计器中的东西并检查生成的代码。只需将BindingSource添加到表单并绑定到该表单上的属性即可。然后在拥有ViewModel时设置BindingSource.DataSource。

在WinForms中绑定到ViewModel的关键是实现接口INotifyPropertyChange并在模型上所有属性的setter中触发PropertyChanged事件,并将该属性的名称作为字符串传递。此事件由任何WinForms控件捕获,如果您更改模型上的任何内容,它将更新。这也意味着您可以在演示者上捕获事件(如果有)并在那里执行任何计算/操作。