Casilla de verificación con el aspecto del tema.
@using Astrol.Component.Basic.Form <AstrolCheckbox @bind-Value="remember" Text="Remember me" /><AstrolCheckbox @bind-Value="news">I want to receive the <b>newsletter</b></AstrolCheckbox><AstrolCheckbox Value="true" Disabled="true" Text="Disabled" /> @* Select all: intermediate state (–) when only some are checked *@<AstrolCheckbox Value="@allSelected" Indeterminate="@someSelected" ValueChanged="SelectAll" Text="All" />@foreach (var key in items.Keys.ToList()){ var name = key; <AstrolCheckbox Value="@items[name]" ValueChanged="v => items[name] = v" Text="@name" />}@code { private bool remember = true; private bool news; private readonly Dictionary<string, bool> items = new() { ["A"] = true, ["B"] = false, ["C"] = false }; private bool allSelected => items.Values.All(v => v); private bool someSelected => items.Values.Any(v => v) && !allSelected; private void SelectAll(bool value) { foreach (var key in items.Keys.ToList()) items[key] = value; }}Con @bind-Value dentro de un EditForm, la casilla avisa del cambio a la validación y se marca en rojo si no es válida. Pulse Guardar sin marcarla.
<EditForm Model="terms" OnValidSubmit="Accept"> <DataAnnotationsValidator /> <AstrolCheckbox @bind-Value="terms.Accepted" Text="I accept the terms" /> <ValidationMessage For="() => terms.Accepted" /> <AstrolButton Type="ButtonType.Submit" Text="Save" /></EditForm> @code { private TermsModel terms = new(); private sealed class TermsModel { [Range(typeof(bool), "true", "true", ErrorMessage = "Accept the terms to continue.")] public bool Accepted { get; set; } }}Es un <input type="checkbox"> nativo: funciona con teclado (Espacio), lectores de pantalla y formularios. AstrolGrid lo usa para seleccionar filas.