分层INotifyPropertyChanged的
-
13-09-2019 - |
题
我有实现INotifyPropertyChanged为属性的类。
我有绑定到该属性的控制。
我有另一个类侦听PropertyChanged事件。在这个类的事件处理程序我改变代码的属性的值。
我的问题是,我不想做任何的逻辑在事件处理程序下一次将发生火警时,由于代码的特性的变化的。
然而,如果用户改变属性的的平均时间的值(通过异步GUI输入)我仍然希望逻辑开火。我还需要确保在控制被更新(这是双向绑定)。
什么是做到这一点的最好办法,而不该成为一个完整的烂摊子?
解决方案
来完成,这将是重构的setter你的财产,以便它叫做服用指示是否引发事件的参数的方法的一种方式。下面是一个简单的代码示例:
Imports System.ComponentModel
Public Class Class1
Implements INotifyPropertyChanged
Public Property MyData() As String
Get
Return _myData
End Get
Set(ByVal value As String)
SetMyData(value, True)
End Set
End Property
Private Sub SetMyData(ByVal value As String, ByVal triggerPropertyChanged As Boolean)
_myData = value
If triggerPropertyChanged Then
OnPropertyChanged("MyData")
End If
End Sub
Private _myData As String
Private Sub OnPropertyChanged(ByVal propertyName As String)
SetMyData("new value", False)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
End Class
其他提示
您的问题是有点模糊,但你可以检查是否值实际上已经发生变化,以确定是否应该做你的逻辑。 这将是更好,如果你有一些代码在你的问题更具体。
不隶属于 StackOverflow