我有实现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

其他提示

您的问题是有点模糊,但你可以检查是否值实际上已经发生变化,以确定是否应该做你的逻辑。 这将是更好,如果你有一些代码在你的问题更具体。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top