我有一些类具有这样的属性,它们很好地工作,因为它们非常正常:
Public Overridable Property CustomerLastName() As String
Get
Return m_CustomerLastName.Value
End Get
Set(ByVal Value As String)
m_CustomerLastName.Value = Value
End Set
End Property我希望将它们更改为这样的工作方式(不必担心IField是什么,只需说它代表表中的一个字段就足够了):
Public Overridable Readonly Property CustomerLastName() As IField
Get
Return m_CustomerLastName
End Get
End Property那样的话,你可以做Customer.CustomerLastName.PreviousValue,或者Customer.CustomerLastName.IsDirty等等。
但这并不是正确的约束。可以理解,因为绑定应该是双向的,并且涉及到反射等等。
当然,它仍然可以是一条双向的街道,我只需要说,“嘿,DataBinding!看这里!”
所以。我在这里做什么?
注意:现在,我想做的就是为了显示目的,将DataBind转换成GridView。但我希望这是灵活的。
发布于 2009-02-05 18:32:42
(更新重新编辑)如果只是为了显示目的,您可能只需在实现IField的类上设置IField()。
(原件)
非双向数据绑定需要INotifyPropertyChanged或CustomerLastNameChanged事件.您可以通过实现ICustomTypeDescriptor或TypeDescriptionProvider将其转换为自定义模型,但随后需要编写自己的PropertyDescriptor实现。
Re IsDirty --在PropertyDescriptor术语中,这是ShouldSerializeValue。
https://stackoverflow.com/questions/517203
复制相似问题