diff --git a/src/Radical.Windows.Tests/API/APIApprovals.Approve_API.approved.txt b/src/Radical.Windows.Tests/API/APIApprovals.Approve_API.approved.txt index cef78448..747d2558 100644 --- a/src/Radical.Windows.Tests/API/APIApprovals.Approve_API.approved.txt +++ b/src/Radical.Windows.Tests/API/APIApprovals.Approve_API.approved.txt @@ -3312,7 +3312,7 @@ namespace Radical.Windows.Model } namespace Radical.Windows.Presentation { - public abstract class AbstractMementoViewModel : Radical.Model.MementoEntity, Radical.Windows.ComponentModel.IViewModel, System.ComponentModel.INotifyPropertyChanged + public abstract class AbstractMementoViewModel : Radical.Model.MementoEntity, Radical.Windows.ComponentModel.IRequireValidation, Radical.Windows.ComponentModel.IViewModel, System.ComponentModel.INotifyDataErrorInfo, System.ComponentModel.INotifyPropertyChanged { protected AbstractMementoViewModel() { } protected AbstractMementoViewModel(Radical.ComponentModel.ChangeTracking.ChangeTrackingRegistration registration) { } @@ -3376,7 +3376,7 @@ namespace Radical.Windows.Presentation "Errors"})] protected virtual System.ValueTuple> ValidateProperty(string propertyName, Radical.Windows.ComponentModel.ValidationBehavior behavior) { } } - public abstract class AbstractViewModel : Radical.Model.Entity, Radical.Windows.ComponentModel.IViewModel, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.ISupportInitialize + public abstract class AbstractViewModel : Radical.Model.Entity, Radical.Windows.ComponentModel.IRequireValidation, Radical.Windows.ComponentModel.IViewModel, System.ComponentModel.INotifyDataErrorInfo, System.ComponentModel.INotifyPropertyChanged, System.ComponentModel.ISupportInitialize { protected AbstractViewModel() { } protected Radical.Windows.ComponentModel.ValidationBehavior DefaultValidationBehavior { get; set; } diff --git a/src/Radical.Windows.Tests/Presentation/AbstractMementoViewModelTests.cs b/src/Radical.Windows.Tests/Presentation/AbstractMementoViewModelTests.cs index 88666a11..8c99a426 100644 --- a/src/Radical.Windows.Tests/Presentation/AbstractMementoViewModelTests.cs +++ b/src/Radical.Windows.Tests/Presentation/AbstractMementoViewModelTests.cs @@ -266,7 +266,7 @@ public void AbstractMementoViewModel_PropertyChanged_is_raised_GetErrors_should_ }; sut.ValidateUsing( - new DataAnnotationValidationService(sut)); + new DataAnnotationValidationService(sut), false); sut.NotNullNotEmpty = ""; Assert.IsNotNull(errors); diff --git a/src/Radical.Windows.Tests/Presentation/AbstractViewModelTests.cs b/src/Radical.Windows.Tests/Presentation/AbstractViewModelTests.cs index 082528ae..454171f3 100644 --- a/src/Radical.Windows.Tests/Presentation/AbstractViewModelTests.cs +++ b/src/Radical.Windows.Tests/Presentation/AbstractViewModelTests.cs @@ -200,7 +200,7 @@ public void AbstractViewModel_PropertyChanged_is_raised_GetErrors_should_contain }; sut.ValidateUsing( - new DataAnnotationValidationService(sut)); + new DataAnnotationValidationService(sut), false); sut.NotNullNotEmpty = ""; Assert.IsNotNull(errors); diff --git a/src/Radical.Windows/Presentation/AbstractMementoViewModel.cs b/src/Radical.Windows/Presentation/AbstractMementoViewModel.cs index d433818d..c02b534d 100644 --- a/src/Radical.Windows/Presentation/AbstractMementoViewModel.cs +++ b/src/Radical.Windows/Presentation/AbstractMementoViewModel.cs @@ -19,7 +19,8 @@ namespace Radical.Windows.Presentation /// public abstract class AbstractMementoViewModel : MementoEntity, - IViewModel + IViewModel, + IRequireValidation { /// /// Gets or sets the view. The view property is intended only for @@ -76,11 +77,7 @@ protected virtual bool SkipPropertyValidation(string propertyName) [SkipPropertyValidation] protected virtual bool IsValidationEnabled { - get - { - return this is INotifyDataErrorInfo - || this is IRequireValidation; - } + get{ return true; } } IValidationService _validationService; @@ -132,7 +129,7 @@ protected string GetPropertyDisplayName(string propertyName) /// protected virtual (bool IsValid, IEnumerable Errors) ValidateProperty(string propertyName, ValidationBehavior behavior) { - (bool IsValid, IEnumerable Errors) validationResult = (true, new ValidationError[0]); + (bool IsValid, IEnumerable Errors) validationResult = (true, Array.Empty()); if (ValidationService.IsValidationSuspended) { return validationResult; @@ -205,7 +202,7 @@ protected virtual (bool IsValid, IEnumerable Errors) ValidatePr { if (ValidationService.IsValidationSuspended) { - return (true, new ValidationError[0]); + return (true, Array.Empty()); } var wasValid = IsValid; diff --git a/src/Radical.Windows/Presentation/AbstractViewModel.cs b/src/Radical.Windows/Presentation/AbstractViewModel.cs index 884148ac..53d9da78 100644 --- a/src/Radical.Windows/Presentation/AbstractViewModel.cs +++ b/src/Radical.Windows/Presentation/AbstractViewModel.cs @@ -19,7 +19,8 @@ namespace Radical.Windows.Presentation public abstract class AbstractViewModel : Entity, IViewModel, - ISupportInitialize + ISupportInitialize, + IRequireValidation { /// /// Gets or sets the view. The view property is intended only for @@ -76,11 +77,7 @@ protected virtual bool SkipPropertyValidation(string propertyName) [SkipPropertyValidation] protected virtual bool IsValidationEnabled { - get - { - return this is INotifyDataErrorInfo - || this is IRequireValidation; - } + get{ return true; } } IValidationService _validationService; @@ -129,7 +126,7 @@ protected string GetPropertyDisplayName(string propertyName) /// protected virtual (bool IsValid, IEnumerable Errors) ValidateProperty(string propertyName, ValidationBehavior behavior) { - (bool IsValid, IEnumerable Errors) validationResult = (true, new ValidationError[0]); + (bool IsValid, IEnumerable Errors) validationResult = (true, Array.Empty()); if (ValidationService.IsValidationSuspended) { return validationResult; @@ -223,7 +220,7 @@ public virtual (bool IsValid, IEnumerable Errors) Validate(Vali { if (ValidationService.IsValidationSuspended) { - return (true, new ValidationError[0]); + return (true, Array.Empty()); } var wasValid = IsValid; diff --git a/src/Radical.Windows/Validation/AbstractValidationService.cs b/src/Radical.Windows/Validation/AbstractValidationService.cs index e45451f8..a1cb82fc 100644 --- a/src/Radical.Windows/Validation/AbstractValidationService.cs +++ b/src/Radical.Windows/Validation/AbstractValidationService.cs @@ -23,7 +23,7 @@ public abstract class AbstractValidationService : IValidationService { if (IsValidationSuspended) { - return (true, new ValidationError[0]); + return (true, Array.Empty()); } var results = OnValidateProperty(propertyName); @@ -41,7 +41,7 @@ protected virtual IEnumerable OnValidateProperty(string propert { if (IsValidationSuspended) { - return new ValidationError[0]; + return Array.Empty(); } /* @@ -64,7 +64,7 @@ protected virtual IEnumerable OnValidateProperty(string propert { if (IsValidationSuspended) { - return (true, new ValidationError[0]); + return (true, Array.Empty()); } //var wasValidBeforeValidation = IsValid; diff --git a/src/Radical.Windows/Validation/NullValidationService.cs b/src/Radical.Windows/Validation/NullValidationService.cs index 1df39d0d..d8405679 100644 --- a/src/Radical.Windows/Validation/NullValidationService.cs +++ b/src/Radical.Windows/Validation/NullValidationService.cs @@ -20,10 +20,10 @@ public sealed class NullValidationService : AbstractValidationService private NullValidationService() : base() { - + SuspendValidation(); } - private static readonly ValidationError[] emptyErrors = new ValidationError[0]; + private static readonly ValidationError[] emptyErrors = System.Array.Empty(); /// /// Called in order to execute the concrete validation process.