Поскольку Исаак заявляет, что то, как вы пытаетесь решить свою проблему, невозможно с Blazor. Тем не менее, дочерние элементы могут зарегистрировать себя с родителем с помощью CascadingParameter. Кажется, что он достиг бы того, чего вы хотите, он просто идет к этому с другой стороны. Позвольте мне попробовать пример ...
С учетом этой настройки
<ParentComponent>
<ChildComponent></ChildComponent>
<ChildComponent></ChildComponent>
<ChildComponent></ChildComponent>
</ParentComponent>
Я думаю, что вы ищете такой вывод
<div>
<p>Total Items: 3</p>
<div>Child Component</div>
<div>Child Component</div>
<div>Child Component</div>
</div>
Родительский компонент
<div>
<p>Total Items: @ItemCount</p>
<CascadingValue Value="this">
@ChildContent
</CascadingValue>
</div>
@functions {
private int ItemCount;
public void AddItem()
{
ItemCount++;
StateHasChanged();
}
}
<div>Child Component</div>
@functions {
[CascadingParameter] private ParentComponet Parent { get; set; }
protected override void OnInit()
{
Parent.AddItem();
}
}
Это должно достичь того, что вы ищете, если я правильно понял вашу потребность.
Одна вещь, которую я бы сказал, это попытаться избежать переопределения BuildRenderTree
, я написал сообщение в блоге о том, как сделать это правильно, но также указал, почему вы, вероятно, не должны.