简单数据绑定 - 如何处理绑定字段/属性更改。 Winforms,.Net

时间:2009-10-19 16:28:14

标签: .net vb.net winforms data-binding

我有一个带有可绑定属性的自定义控件: -

Private _Value As Object
<Bindable(True), ... > _
Public Property Value() As Object
    Get
        Return _Value
    End Get
    Set(ByVal value As Object)
        _Value = value
    End Set
End Property

任何时候,Value绑定的字段都会发生变化,我需要获取类型。

我在两个地方这样做。首先在OnBindingContextChanged: -

Protected Overrides Sub OnBindingContextChanged(ByVal e As System.EventArgs)
    MyBase.OnBindingContextChanged(e)
    RemoveHandler Me.DataBindings.CollectionChanged, AddressOf DataBindings_CollectionChanged
    AddHandler Me.DataBindings.CollectionChanged, AddressOf DataBindings_CollectionChanged
    Me.MyBinding = Me.DataBindings("Value")
    If Me.MyBinding IsNot Nothing Then
        Me.GetValueType(Me.MyBinding)
    End If
End Sub

此外,我在这里,我正在为DataBindings.CollectionChanged事件添加一个处理程序。 这是我检索类型的第二个地方: -

Private Sub DataBindings_CollectionChanged(ByVal sender As Object, ByVal e As System.ComponentModel.CollectionChangeEventArgs)

    If e.Action = CollectionChangeAction.Add Then

        Dim b As Binding = DirectCast(e.Element, Binding)
        If b.PropertyName = "Value" Then
            Me.GetValueType(b)
        End If

    End If
End Sub

我需要第一个位置,因为直到InitializeComponent之后的一段时间才会触发BindingContextChanged事件。 如果以编程方式更改绑定字段,则需要第二个位置。

我在这里处理正确的事件,还是有更清洁的方法呢?

注意:我的GetValueType方法使用CurrencyManager.GetItemProperties ....等来检索类型。

干杯,

Jules

ETA:在这里要清楚,我想知道绑定字段何时发生了变化,而不是绑定字段值。

1 个答案:

答案 0 :(得分:0)

听起来您正在寻找INotifyPropertyChange接口,该接口将自动通知绑定控件的更新。

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx