【发布时间】:2010-03-16 19:35:32
【问题描述】:
需求/问题:
- 我想将一个实体的多个属性绑定到表单中的控件。 其中一些是不时只读的(根据业务逻辑)。 - 编辑: 逻辑基于绑定实例,而不仅仅是其类型。
- 当使用将
INotifyPropertyChanged实现为DataSource的实体时,每个更改通知刷新绑定到该数据源的所有控件(易于验证 - 只需将两个属性绑定到两个控件并在其中一个上调用更改通知,您将看到两个属性都被命中并重新评估)。 - 应该有用户友好的错误通知(实体实现
IDataErrorInfo)。 (可能使用ErrorProvider)
将实体用作控件的DataSource 会导致性能问题,并在控件变为只读时使生活变得更加困难。
我想创建某种包装器来保存实体和特定属性,以便每个控件都绑定到不同的DataSource。此外,该包装器可以保存该属性的ReadOnly 指示符,因此控件将直接绑定到该值。
包装器可能如下所示:
interface IPropertyWrapper : INotifyPropertyChanged, IDataErrorInfo
{
object Value { get; set; }
bool IsReadOnly { get; }
}
但这也意味着每个属性(属性包装器)都有不同的ErrorProvider
我觉得我正在尝试重新发明轮子......处理此类复杂绑定需求的“正确”方法是什么?
先谢谢了。
【问题讨论】:
标签: c# winforms data-binding