防止财产变化在数据绑定和强制绑定控件来显示当前值
-
21-08-2019 - |
题
我
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
不隶属于 StackOverflow