Smaragd v5.0 Release Notes
Release Date: 2019-08-15 // over 4 years ago-
๐ This release introduces a refactoring of many classes and interfaces included in this library. This reduces complexity, enables better testability and provides better performance.
๐ There are also new features, like the added support for WeakReference<T> storage fields, updated XML documentation and more unittests.A more detailed summary of the changes:
Bindable
- โ remove IRaisePropertyChanging and IRaisePropertyChanged interfaces and change methods to protected visibility
- ๐ rename RaisePropertyChanging method to NotifyPropertyChanging
- ๐ rename RaisePropertyChanged method to NotifyPropertyChanged
- โ remove virtual keyword from PropertyChanging and PropertyChanged eventhandlers
- ๐ allow propertyName to be null in NotifyPropertyChanging, NotifyPropertyChanged and SetProperty methods
- โ add overload for SetProperty method for setting WeakReference<T> storage fields
- โ add overloads for SetProperty method without the oldValue out parameter
- โ add comparer parameter to SetProperty methods
ComputedBindable and ViewModel
- โ remove ComputedBindable class and move logic to ViewModel class
- โ remove Commands dictionary from ViewModel class
- โ add virtual keyword to IsDirty, Parent and IsUpdating properties
ValidatingViewModel
- โ remove IRaiseErrorsChanged interface and change method to protected visibility
- ๐ rename RaiseErrorsChanged method to NotifyErrorsChanged
- โ remove virtual keyword from ErrorsChanged eventhandler
- set multiple validation errors per property by using SetErrors()
- โ add overload to GetErrors method with generic return type IEnumerable<string>
- โ remove support for IDataErrorInfo interface
- ๐ change IValidation interface to generic in and out parameters
- โ remove Validation<T> base class
- โ add FuncValidation class
ViewModelCommand and AsyncViewModelCommand
- โ remove IRaiseCanExecuteChanged interface and change method to protected visibility
- ๐ rename RaiseCanExecuteChanged method to NotifyCanExecuteChanged
- โ remove virtual keyword from CanExecuteChanged eventhandler
- โ remove CanExecuteSourceAttribute class, use OnParentPropertyChanged instead
- implement and automatically attach OnParentPropertyChanging and OnParentPropertyChanged methods to Parent
- properly raise events on PropertyChanging and PropertyChanged eventhandlers when IsWorking is about to change or has changed
- check if the returned task from the ExecuteAsync method is null before awaiting it