Ich entwerfe eine neue Klasse in C #, die ein paar Eigenschaften hat. Meine Benutzer möchten wissen, wann sich jeder von ihnen ändert.
Was ist eine bessere Wahl? INotifyPropertyChanged Stil der Implementierung oder nur separate Ereignisse, die meinen Eigenschaften entsprechen? Oder beides?
In Zukunft ist INotifyPropertyChanged
die Norm und hat viel bessere Unterstützung in WPF. Ich erinnere mich, dass BindingList<T>
nur INotifyPropertyChanged
berücksichtigt (siehe HookPropertyChanged
und UnhookPropertyChanged
im Reflektor).
Dies ist auch effizienter, da die UI nur einen Ereignis-Hook benötigt und nicht einen pro Ereignis - und Ihre Klasse effizienter sein kann, da sie nur ein Feld für einen Handler benötigt (und nicht einen für jede Eigenschaft oder den Niggel von EventHandlerList
und einer Reihe von statischen Schlüsseln gehen zu müssen)
Der alte Stil ist hauptsächlich ein Kater.
Die Implementierung der INotifyPropertyChanged-Schnittstelle bietet Ihnen den zusätzlichen Vorteil, dass Bindungsquellen automatisch Änderungen an Ihren Eigenschaften überwachen und die Steuerelemente aktualisieren.
Versuchen Sie es. Erstellen Sie eine Klasse ohne die INotifyPropertyChanged-Schnittstelle, und binden Sie sie an etwas. Sie können beispielsweise eine seiner Eigenschaften an die Text-Eigenschaft einer TextBox binden. Fügen Sie eine Schaltfläche hinzu, die sich ändert, nicht der Text der TextBox, sondern der Wert der jeweiligen Eigenschaft in der Instanz, die an die Box gebunden ist. Starten Sie und klicken Sie auf die Schaltfläche. Das Textfeld wird nicht über die Änderung informiert. Wenn Sie dann INotifyPropertyChanged in der Klasse implementieren, lassen Sie den Setter der Eigenschaft über die Eigenschaft PropertyChanged selbst über die Änderung informieren, nachdem Sie den Test wiederholt haben, wird die Aktualisierung der TextBox angezeigt.
Tags und Links c# properties