2010-11-29 6 views
0

VB-Code bei der Umwandlung:Problem der Codeform 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 

Converted C# -Code

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); 
     } 
    } 
} 

Fehler ist:

Fehler 1 Der Name 'PropertyChangedEvent' existiert nicht im aktuellen Kontext

+0

Allgemeiner Hinweis, Refelector herunterladen und installieren. Invalubale beim Konvertieren von/in VB und C#. –

Antwort

3

Ihr Ereignis heißt "PropertyChanged", nicht "PropertyChangedEvent".
Außerdem ist das Ereignis explizit implementiert, dh Sie müssen Folgendes verwenden: ((INotifyPropertyChanged)this).PropertyChanged anstelle von PropertyChanged, um auf das Ereignis zuzugreifen.
Und wie Oded darauf hingewiesen, überprüft der Code zweimal für das Ereignis. Sie können eine dieser Prüfungen entfernen.

+1

+1 - Ja. Und es gibt sogar eine zusätzliche verschachtelte "if" -Klausel, die damit zu tun hat. – Oded

0

Verwenden Sie keine explizite Schnittstellenimplementierung, sondern machen Sie sie zu einer öffentlichen Methode.

Oder this an die Schnittstelle werfen, um den Handler aufzurufen. ((INotifyPropertyChanged)this).PropertyChanged