Public Overrides Property UID() As String
        Get
            Return mUID
        End Get
        Set(ByVal value As String)
            If Me.IsNew Then
                mUID = value
            End If
            OnPropertyChanged("UID")
        End Set
    End Property

类实现INotifyPropertyChanged,我结合在winform控制TextBox控件。

问题是,当用户键入一个值到文本框中该新值在文本框中所示,即使结合的值保持不变做这样的事实是否新款是假的。 (我使用这两种类型的DataSourceUpdateMode试过。)

我已阅读 INotifyPropertyChanged的问题和我相信Windows窗体的工作原理基本相同的方式在该事件的始作俑者不会也检测处理该事件。

有什么我可以在BO类做以武力回应了INotifyPropertyChanged的事件控制?还是有别的东西,我可以在BO类中,以获得以显示正确的值控制?

我知道我可以在各种方式的GUI代码处理这个问题,但是这不是我的目标。

有帮助吗?

解决方案

我发现一个答案。

首先,这是一个问题,并且通过洛基Lhotka已经注意到。我所使用的溶液来自他。

首先他可以在形式或用户控制下降的控制,它解决了上述问题。

他也有一些代码,我稍微修改和使用的并把它放在我们的碱形式和用户控制上。

Private Sub baseUserControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    HookBindings(Me)
End Sub

Private Sub HookBindings(ByVal CNTRL As Control)
    For Each ctl As Control In CNTRL.Controls
        If Not TypeOf ctl Is baseUserControl Then
            For Each b As Binding In ctl.DataBindings
                AddHandler b.BindingComplete, AddressOf ReadBinding
            Next
            HookBindings(ctl)
        End If
    Next
End Sub

Private Sub ReadBinding(ByVal sender As Object, ByVal e As BindingCompleteEventArgs)
    e.Binding.ReadValue()
End Sub
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top