2010-11-29 45 views
0

VB代碼:問題在代碼形式vb.net轉換爲C#

Public Event PropertyChanged(ByVal sender As Object, ByVal e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged 

Public Sub OnPropertyChanged(ByVal e As PropertyChangedEventArgs) 
    If PropertyChangedEvent IsNot Nothing Then 
    RaiseEvent PropertyChanged(Me, e) 
    End If 
End Sub 

轉換C#代碼

public event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged; 

public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e); 

public void OnPropertyChanged(PropertyChangedEventArgs e) 
{ 
    if (PropertyChangedEvent != null) { 
     if (PropertyChanged != null) { 
      PropertyChanged(this, e); 
     } 
    } 
} 

錯誤是:

錯誤1名稱 'PropertyChangedEvent'在當前情況下不存在

+0

一般說明,下載並安裝重複選擇器。 Invalubale從/到VB和C#轉換。 – 2010-11-29 10:49:47

回答

3

你的事件被稱爲「PropertyChanged」,而不是「PropertyChangedEvent」。
此外,該事件是明確實施的,這意味着,您必須使用此: ((INotifyPropertyChanged)this).PropertyChanged而不是PropertyChanged訪問該事件。
正如Oded指出的那樣,代碼檢查兩次事件。您可以刪除其中一項檢查。

+1

+1 - 是的。甚至還有一個嵌套的if語句處理它。 – Oded 2010-11-29 10:49:39

0

不要使用明確的接口實現,而只是使其成爲公共方法。

或鑄造this到接口來調用處理程序。 ((INotifyPropertyChanged)this).PropertyChanged