2009-06-15 50 views
0

我有一個實現INotifyPropertyChanged屬性的類。分層INotifyPropertyChanged

我有一個綁定到該屬性的控件。

我有另一個類來監聽propertychanged事件。在該類的事件處理程序中,我更改了代碼中屬性的值。

我的問題是,我不想做任何的邏輯在事件處理程序下一次會因火燒屬性的變化,由於代碼。

但是,如果用戶更改屬性的平均時間值(通過異步GUI輸入),我還是想的邏輯火。我還需要確保控件得到更新(這是雙向綁定)。

什麼是這樣做沒有這成爲一個完整的一塌糊塗的最佳方式?

回答

2

一種方法是重構二傳手你的財產,以便它叫做服用指示是否引發事件的參數的方法。下面是一個簡單的代碼示例:

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 
1

你的問題是有點模糊,但你可以檢查是否值實際上已經發生變化,以確定是否應該做你的邏輯。 如果你在你的問題中包含一些更具體的代碼會更好。做到這一點