用户控件数据绑定的最佳实践 - 如何实现?

4

我有一个包含文本框、标签等控件的用户控件。现在,我想要获得与直接放置控件在表单上相同的数据绑定功能。我尝试使用额外的绑定源和错误提供程序在用户控件中,并尝试将我的控件属性作为属性可用。

但是什么都没起作用。所以肯定有解决方法。那么怎么做呢?


你能提供一小段代码示例(或更具体的信息),说明你想要生成哪些绑定吗?另外,你更喜欢C#还是vb.net的代码示例? - Maslow
我有一个带有3个选项卡的TabControl。这3个选项卡分别为Delivery(送货)、Invoice(发票)和Default(默认)。现在,我有一个AddressUserControl并将此UserControl添加到选项卡页中。我的主表单上的DataBinding具有DeliveryAddress、InvoiceAddress和DefaultAddress的POCO。那么,我如何实现良好的Data Binding并使用ErrorProvider?ErrorProvider也在主窗体上。 - Timur Zanagar
关于POCO的问题:我不明白DeliveryAddress、InvoiceAddress和DefaultAddress属性是字符串还是POCO(具有街道、邮编等属性)。您能否编写一些(伪)代码来展示它们是如何定义的? - edymtt
1个回答

2
我在https://github.com/edymtt/usercontrolwithdatabinding上创建了一个示例,以说明可能适用于您问题的某些数据绑定情况。特别是我解决了两种情况:
1. 实现一个UserControl以编辑基本属性(例如字符串、整数等); 2. 实现一个UserControl以编辑复杂类型(例如Address POCO)的属性;

实现一个UserControl以编辑基本属性

在这种情况下,只需公开底层控件的相关属性(例如TextBoxText属性),并在更改时引发适当的事件(延续上例,在TextBox上处理TextChanged事件并引发新的TextChanged事件,参见MSDN上的此页面的“自定义控件的更改通知”一节)。
表单中的ErrorProvider可以轻松处理此类UserControl。

实现一个UserControl以编辑复杂类型的属性

这种情况不比上一个复杂:
- 您需要在用户控件中放置一个BindingSource和一个Error Provider来处理您需要的POCO; - 接下来,您需要公开一个属性以接收绑定对象并在运行时分配它。
我希望示例足够清晰,以便理解绑定的工作方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接