How can I make an event that is raised when a variable or property is changed (or can I just put the code I would put in an event in the Set section of a property?
From the MSDN library entry INotifyPropertyChanged.PropertyChanged Event
:
Public Class DemoCustomer
Implements INotifyPropertyChanged
Private customerNameValue As String = String.Empty
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
Private Sub NotifyPropertyChanged(ByVal info As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
End Sub
Public Property CustomerName() As String
Get
Return Me.customerNameValue
End Get
Set(ByVal value As String)
If Not (value = customerNameValue) Then
Me.customerNameValue = value
NotifyPropertyChanged("CustomerName")
End If
End Set
End Property
End Class
Yes, the best (if not the only) way of doing this is to completely hide the actual variable (make it Private) and expose it via a Property which fires events whenever the setter is used.
I do this regularly, but I've found that it's important to NOT raise the event if the new value is similar to the old value. This both eliminates unnecessary function calls and sometimes prevents recursive events.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With