What happened
In versions prior to v19.2, the IObjectSpace.ObjectChanged event is raised each time you modify a control value in a DetailView, for instance, when you enter a letter in a text box.
This behavior has the following negative side effects:
- It slows down the UI if complex logic is attached to IObjectSpace.ObjectChanged event handlers. For instance, in user scenarios with many Conditional Appearance rules. (T705042, Q360826).
- The ObjectSpace.ObjectChanged event arguments contain old values when the event is raised in response to unfinished control value changes. New control values are not propagated to the business object until control editing is finished.
In v19.2, we disabled this behavior by default.
How to update your application
To make sure that your app behaves correctly after this change, follow this known best practice for your data model: PropertyChanged Event in Business Classes.
NOTE: if persistent objects do not send INotifyPropertyChanged notifications about their property changes, these changes will NOT be stored in a database.
How to restore the previous behavior
In v19.2, set the DetailView.RaiseObjectChangedOnControlValueChanged property or the static DetailView.DefaultRaiseObjectChangedOnControlValueChanged field to True.
How to enable the new behavior in versions prior to v19.2
Set the DetailView.RaiseObjectChangedOnControlValueChanged property to False (example).