2016-05-04 10 views
1

Ich habe meine Ansichtsmodell mit Postsharp gemacht:abonnieren property Ereignis Postsharp

[NotifyPropertyChanged] 
class ProfileSelectorViewModel 
{ 
    public int Selection { get; set; } 

} 

Selection in die Auswahl Eigenschaft eines ListBox gebunden ist. Wie kann ich die Änderung dieser Eigenschaft abonnieren? Ich möchte eine Methode aufrufen, wenn Selection ihren Wert ändert.

Antwort

1

Sie können das PropertyChanged-Ereignis abonnieren, indem Sie ein Objekt der Klasse ProfileSelectorViewModel umwandeln. Da sich Ihre Tooling möglicherweise beschweren, dass die Klasse die Schnittstelle INotifyPropertyChanged noch nicht implementiert, können Sie eine Hilfsmethode Post.Cast<SourceType, TargetType>(SourceType) verwenden.

Also, wenn Sie ein Objekt obj vom Typ haben ProfileSelectorViewModel und ein Verfahren OnSelectionChanged die Änderung der Handhabung, sieht die Zeichnung wie folgt aus:

Post.Cast<ProfileSelectorViewModel,INotifyPropertyChanged>(obj).PropertyChanged += OnSelectionChanged; 

Siehe http://doc.postsharp.net/inotifypropertychanged-add#consuming für weitere Einzelheiten.

+0

Danke. Ich habe den Code geändert, den Sie dafür angegeben haben: 'Post.Cast (this) .PropertyChanged + = OnSelectionChanged;' und setzen Sie dies in den Konstruktor von 'ProfileSelectorViewModel'. Das funktioniert wirklich gut! – chris579