@inject NavigationManager NavManager @code { [CascadingParameter] public TabControl? Parent { get; set; } [Parameter] public RenderFragment? ChildContent { get; set; } [Parameter] public Action? OnActivated { get; set; } [Parameter] public string? NavigationUri { get; set; } [Parameter] public string? Name { get; set; } private string ActiveClass => Parent?.ActiveTab == Name ? "active" : ""; protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); if (Parent is null) { throw new Exception("TabHeader must be contained in a TabControl."); } if (Parent.ActiveTab == Name) { OnActivated?.Invoke(); } } private async Task SetActiveTab() { if (!string.IsNullOrWhiteSpace(NavigationUri)) { NavManager.NavigateTo(NavigationUri); } Parent?.SetActiveTab(this); await InvokeAsync(StateHasChanged); OnActivated?.Invoke(); } }