Skip to content
Nuvyntra Labs

Documentation

Validation

DataAnnotations, IValidator, MustMatch, and INotifyDataErrorInfo on AvaloniaFormViewModel.

Validation

Plugin.Avalonia.MVVMExpress.Validation ships DataAnnotations plus IValidator and MustMatchAttribute. The package includes ILLink.Descriptors.xml that roots Required, MinLength, MaxLength, StringLength, Range, RegularExpression, EmailAddress, Compare, and MustMatch. Custom attributes need an app-level descriptor. FluentValidation is an adapter the app may add. Avalonia bindings use AvaloniaFormViewModel (INotifyDataErrorInfo).

public sealed class ProductDraft
{
    [Required, StringLength(80)]
    public string Name { get; set; } = "";

    [Range(0.01, 1_000_000)]
    public decimal Price { get; set; }
}

var summary = await validator.ValidateAsync(draft, cancellationToken);
if (!summary.IsValid)
{
    return Outcome.Failure("validation", summary.Messages[0].Message);
}

Discussion

Comment on Plugin.Avalonia.MVVMExpress. The thread lives on this component's GitHub repository (nuvyntralabs/Plugin.Avalonia.MVVMExpress). Sign in with GitHub — Giscus uses Discussions, Utterances uses Issues.