2017-01-07 2 views
0

Ich versuche eine statische Eigenschaft zu erstellen, wobei INotifyPropertyChanged alle Änderungen an einem DataGridComboBox, an den ich bin, zu aktualisieren.Statische Eigenschaft mit INotifyPropertyChanged. C#

ich diese Störung erhalte,

Fehler CS0026 Schlüsselwort 'this' nicht gültig in einer statischen Eigenschaft ist, statische Methode oder statisches Feld

Durch meine Suche stieß ich auf diesem Why can't you use the keyword 'this' in a static method in .Net?, aber selbst nachdem ich alles durchgegangen bin, kann ich immer noch nicht herausfinden, wie ich das zur Arbeit bringen soll.

Aber alles, was ich ändern negiert nur, dass ich versuche, eine statische Eigenschaft mit INotifyPropertyChanged ???

Mein Code:

private static List<string> _nursingHomeSectionListProperty; 

public static List<string> NursingHomeSectionListProperty 
{ 
    get { return _nursingHomeSectionListProperty; } 
    set 
    { 
     _nursingHomeSectionListProperty = value; 
     NotifyStaticPropertyChanged(); 
    } 
} 

und Eigentum geändert Handler

public static event PropertyChangedEventHandler StaticPropertyChanged; 

public static void NotifyStaticPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     StaticPropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 

Und der Code unten ist, wie ich die Eigenschaft veränderte Handler für nicht statische Eigenschaften verwenden,

public event PropertyChangedEventHandler PropertyChanged; 

public void NotifyPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
+0

Ich verstehe nicht, warum Sie statische Eigenschaft in Ihrem Modell benötigen, aber das erste Argument der "Invoke" ist der Absender. und ein einfaches 'neues Objekt()' wird – Alex

+0

Auch warum verwenden Sie Delegat. Rufen Sie Ihre Raise-Methode auf und nennen Sie sie Notify ... und nicht On? – Sefe

+0

@Sefe Wegen des '? .' Operators. Der Name der Methode ist irrelevant. – Clemens

Antwort

5

Pass einfach null statt this:

Weitere Informationen zur Benachrichtigung über statische Eigenschaften finden Sie unter this blog post.

+0

Danke auch für den Link, das hilft mir sehr. – KyloRen

+0

OK, ich habe ein Problem, Ihr Link zeigt nicht, wie Sie 'Static Member',' StaticPropertyChanged' verwenden. Dies wirft einen Fehler in der XAML, sagen, dass es nicht gelöst werden kann. Leider berührt der Link das nicht, irgendwelche Ideen? – KyloRen

+0

Nicht sicher, was du meinst. Der Beitrag zeigt auch, wie man an eine statische Eigenschaft bindet. Stellen Sie sich wahrscheinlich eine neue StackOverflow-Frage und geben Sie die Details des Fehlers an. – Clemens