@@ -81,6 +81,16 @@ public partial class Validation : ComponentBase, IValidation, IDisposable
8181 /// </summary>
8282 private BaseValidationResult validationMessageComponent ;
8383
84+ /// <summary>
85+ /// Holds the current warning validation message component.
86+ /// </summary>
87+ private BaseValidationResult validationWarningMessageComponent ;
88+
89+ /// <summary>
90+ /// Holds the current error validation message component.
91+ /// </summary>
92+ private BaseValidationResult validationErrorMessageComponent ;
93+
8494 /// <summary>
8595 /// Define the cancellation token.
8696 /// </summary>
@@ -431,10 +441,28 @@ internal void NotifyValidationMessageInitialized( BaseValidationResult validatio
431441 if ( validationMessage is null )
432442 return ;
433443
434- if ( ReferenceEquals ( validationMessageComponent , validationMessage ) )
435- return ;
444+ if ( validationMessage is ValidationWarning )
445+ {
446+ if ( ReferenceEquals ( validationWarningMessageComponent , validationMessage ) )
447+ return ;
448+
449+ validationWarningMessageComponent = validationMessage ;
450+ }
451+ else if ( validationMessage is ValidationError )
452+ {
453+ if ( ReferenceEquals ( validationErrorMessageComponent , validationMessage ) )
454+ return ;
455+
456+ validationErrorMessageComponent = validationMessage ;
457+ }
458+ else
459+ {
460+ if ( ReferenceEquals ( validationMessageComponent , validationMessage ) )
461+ return ;
462+
463+ validationMessageComponent = validationMessage ;
464+ }
436465
437- validationMessageComponent = validationMessage ;
438466 ValidationMessageChanged ? . Invoke ( ) ;
439467 }
440468
@@ -444,11 +472,28 @@ internal void NotifyValidationMessageInitialized( BaseValidationResult validatio
444472 /// <param name="validationMessage">Validation message component.</param>
445473 internal void NotifyValidationMessageRemoved ( BaseValidationResult validationMessage )
446474 {
447- if ( ! ReferenceEquals ( validationMessageComponent , validationMessage ) )
448- return ;
475+ var changed = false ;
449476
450- validationMessageComponent = null ;
451- ValidationMessageChanged ? . Invoke ( ) ;
477+ if ( ReferenceEquals ( validationWarningMessageComponent , validationMessage ) )
478+ {
479+ validationWarningMessageComponent = null ;
480+ changed = true ;
481+ }
482+
483+ if ( ReferenceEquals ( validationErrorMessageComponent , validationMessage ) )
484+ {
485+ validationErrorMessageComponent = null ;
486+ changed = true ;
487+ }
488+
489+ if ( ReferenceEquals ( validationMessageComponent , validationMessage ) )
490+ {
491+ validationMessageComponent = null ;
492+ changed = true ;
493+ }
494+
495+ if ( changed )
496+ ValidationMessageChanged ? . Invoke ( ) ;
452497 }
453498
454499 #endregion
@@ -471,7 +516,12 @@ internal void NotifyValidationMessageRemoved( BaseValidationResult validationMes
471516 /// <summary>
472517 /// Gets the element id of the validation message container.
473518 /// </summary>
474- internal string ValidationMessageElementId => validationMessageComponent ? . ElementId ;
519+ internal string ValidationMessageElementId => Status switch
520+ {
521+ ValidationStatus . Warning => validationWarningMessageComponent ? . ElementId ?? validationMessageComponent ? . ElementId ,
522+ ValidationStatus . Error => validationErrorMessageComponent ? . ElementId ?? validationMessageComponent ? . ElementId ,
523+ _ => validationMessageComponent ? . ElementId ,
524+ } ;
475525
476526 /// <inheritdoc/>
477527 public FieldIdentifier FieldIdentifier => fieldIdentifier ;
0 commit comments