Если у вас есть родительский компонент типа X и вы хотите ссылаться на все тесно связанные дочерние элементы типа Y (например, TabControl и TabPages), вы можете это сделать.
1: В родительском элементе добавьте обертку вокруг вашего @ChildContent
, чтобы добавить каскадное значение, указывающее на себя.
<CascadingValue Value=@this>
@ChildContent
</CascadingValue>
2: у ваших детей вы можете использовать это значение через CascadingParameter
@code
{
[CascadingParameter]
public YourParentComponent ParentComponent { get; set; }
}
3. Затем ваши дети могут уведомить своих родителей о своем существовании.
protected override void OnInitialized()
{
if (ParentComponent == null)
throw .............("Must be used within MyParentComponent");
MyParentComponent.AddChild(this);
}
Если ваши дочерние компоненты визуализируются условно, попросите их реализовать IDisposable, чтобы они могли уведомить родителя об удалении их из своего списка.
В университете Блазор есть пример, показывающий, как создать TabControl - https://blazor-university.com/templating-components-with-renderfragements/creating-a-tabcontrol/