.net 如何使数据绑定具有双向性(不仅是在UI发生更改时,而且是在代码中的属性发生更改时)?
在Windows窗体/用户控件中使用.net 如何使数据绑定具有双向性(不仅是在UI发生更改时,而且是在代码中的属性发生更改时)?,.net,vb.net,winforms,visual-studio-2008,.net,Vb.net,Winforms,Visual Studio 2008,在Windows窗体/用户控件中使用数据绑定时遇到问题。例如: 创建一个windows窗体,在其上放置一个文本框,并在其上放置两个按钮。表格后面的代码是: Imports System.ComponentModel Public Class Form1 Implements System.ComponentModel.INotifyPropertyChanged Public Event PropertyChanged(ByVal sender As Object, ByVal
数据绑定时遇到问题。例如:
创建一个windows窗体,在其上放置一个文本框,并在其上放置两个按钮。表格后面的代码是:
Imports System.ComponentModel
Public Class Form1
Implements System.ComponentModel.INotifyPropertyChanged
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Private Sub NotifyPropertyChanged(ByVal info As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
End Sub
Private mSomeProperty As String
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.TextBox1.DataBindings.Add("text", Me, "SomeProperty", False, DataSourceUpdateMode.OnPropertyChanged)
End Sub
Public Property SomeProperty() As String
Get
Return mSomeProperty
End Get
Set(ByVal value As String)
mSomeProperty = value
NotifyPropertyChanged("SomeProperty")
End Set
End Property
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Me.SomeProperty)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.SomeProperty = "Set in code - see it on the UI?"
End Sub
End Class
如果在文本框中键入内容并按按钮1
,您将看到一个包含属性文本的消息框。但是,如果按按钮2
(在代码中设置属性),然后再次按按钮1
,您将看到,虽然属性确实在代码中设置,但文本框并不反映更改
请问我错过了什么
编辑:更新代码以提供INotifyPropertyChanged的实现
。现在,它可以根据需要工作。您需要实现该接口
如果MSDN对您没有帮助,您可能会从中受益良多。
INotifyPropertyChanged
成功了,谢谢!更新代码(以上)以反映更改!令人惊叹的!