我有一些具有这样的属性的类,并且它们完美地工作,因为它们非常正常:
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以进行显示。但我希望这是灵活的。
答案 0 :(得分:0)
(更新重新编辑)如果它仅用于显示目的,您可以在实现IField
的类上设置ToString()。
(原)
否 - 双向数据绑定需要INotifyPropertyChanged
或CustomerLastNameChanged
事件。您可以通过实施ICustomTypeDescriptor
或TypeDescriptionProvider
将其简化为自定义模型,但是您需要编写自己的PropertyDescriptor
实现。
重新IsDirty
- 在ShouldSerializeValue
条款中PropertyDescriptor
。