The Change even will not fire if validation fails. Here is the actual implementation.
internal async System.Threading.Tasks.Task SelectStep(RadzenStepsItem step, bool raiseChange = false)
{
var valid = true;
if (EditContext != null)
{
valid = EditContext.Validate();
}
var newIndex = steps.IndexOf(step);
if (valid || newIndex < SelectedIndex)
{
SelectedIndex = newIndex;
if (raiseChange)
{
await Change.InvokeAsync(SelectedIndex);
await SelectedIndexChanged.InvokeAsync(SelectedIndex);
StateHasChanged();
}
}
}