2016-08-06 86 views
0

Do INotifyPropertyChanged benachrichtigt nur die Änderungen von der Benutzeroberfläche. Und auf andere Weise können wir auch sagen, dass die Wertänderungen der Eigenschaften aus anderen Quellen als der Benutzeroberfläche nicht gemeldet werden?Meldet INotifyPropertyChanged nur die Änderungen von der Benutzeroberfläche

+0

Nein, INotifyPropertyChanged hat nichts mit Benachrichtigungen von der Benutzeroberfläche. Bindungen sorgen dafür, dass Benachrichtigungen über Abhängigkeitseigenschaften geändert werden, die INotifyPropertyChanged nicht verwenden. –

Antwort

0

Die INotifyPropertyChanged-Schnittstelle wird verwendet, um Clients, in der Regel verbindlichen Clients, mitzuteilen, dass sich ein Eigenschaftswert geändert hat. So stellen Sie die Notify zwischen der Benutzeroberfläche und der Quelle sicher, wenn Sie möchten, dass die Benachrichtigung zweiseitig ist, müssen Sie den Bindungsmodus auf TwoWay setzen, so dass die INotifyPropertyChanged die Änderung von der Benutzeroberfläche nur benachrichtigen, wenn Sie den Bindungsmodus auf OneWay To einstellen Quelle, wenn Sie die Bindung TwoWay so festlegen, dass die Benachrichtigung von der Benutzeroberfläche an die Quelle und von der Quelle an die Benutzeroberfläche erfolgt.

+0

INotifyPropertyChanged hat nichts damit zu tun, dass die Benutzeroberfläche die Bindungsquelle für Änderungen benachrichtigt. Es wird nur für die Quelle verwendet, um das Ziel zu benachrichtigen. Mode = TwoWay bewirkt, dass die Bindung die Quelleigenschaft aktualisiert, aber nicht über INotifyPropertyChanged. –

+0

@EdPlunkett Bitte beziehen Sie sich auf diesen Link: https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx –

+0

Eigentlich ändere ich den Wert eines hashset von einem ICommand geerbte Klasse. Ich möchte fragen, dass diese Änderung von der OnPropertyChanged im Getter der Eigenschaft gemeldet werden würde. public HashSet EmpDeductions { erhalten {return empDeductions; } set { if (empDeductions! = Wert) { empDeductions = Wert; OnPropertyChanged ("EmpDeductions"); NetSalary = NetSalary; } } } –