【发布时间】:2010-11-26 17:45:35
【问题描述】:
我有一个以特定方式实现属性的类,以处理我们业务逻辑系统的一些自定义要求。
这种“特定方式”使属性在数据绑定的上下文中不可操作。基本上,如果我将我们类的一个对象放到一个表单上,数据绑定在该对象上找不到任何东西,并且该对象的属性检查器虽然列出了属性,但不允许我编辑它们。
我想知道的是,我是否可以在我的类中实现一个接口或类似的接口,它将向表单设计者报告可以绑定哪些属性,并实现与数据绑定系统对话所需的自定义代码代表我的财产。
请注意,我不需要能够在属性检查器中编辑我的对象的属性值,这只是属性如何不起作用的一个示例。我只需要数据绑定支持。
有没有这样的接口,如果有,是什么?
让我们举一个简单的例子。
假设我有这个类:
public class CustomDataBinding : Component
{
private Dictionary<String, Object> _Properties = new Dictionary<String, Object>();
public CustomDataBinding()
{
_Properties["Property1"] = 10;
_Properties["Property2"] = "Test";
}
}
除了实际制作属性之外,我可以对我的对象做些什么来增加对这两个“属性”的数据绑定支持?
请注意,对于我的真实类,我知道每个属性的类型,所以如果它更容易,请将上面的代码更改为只使用字符串值:
public class CustomDataBinding : Component
{
private Dictionary<String, String> _Properties = new Dictionary<String, String>();
public CustomDataBinding()
{
_Properties["Property1"] = "Property1";
_Properties["Property2"] = "Property2";
}
}
我还需要验证支持,因为我们的类也可以报告每个属性的验证状态,但我已经实现了 IDataErrorInfo 和 IDataValidationInfo,我认为这将给我。我还实现了 INotifyPropertyChanged,所以我认为更改机制到位,但我需要发现并与属性交谈。除了这些接口之外,我应该研究的任何其他信息都是受欢迎的信息。
【问题讨论】:
标签: c# data-binding interface