因此使用该组件将如下所示:
<ParentListComponent Header="Test">
<ChildListItemComponent Name="1"/>
<ChildListItemComponent Name="2"/>
<ChildListItemComponent Name="3"/>
<ChildListItemComponent Name="4"/>
</ParentListComponent>
ParentListComponent
看起来像这样:
@foreach(var childComponent in listComponents){
@childComponent
}
@code{
[Parameter]
Public List<ChildListItemComponent> listComponents { get; set; }
}
我知道我可以很容易地通过将其传递为ChildContent来呈现它,如下所示,但我真的很想保留列表,以便可以轻松地从父项访问每个项目。
[Parameter]
public RenderFragment ChildContent { get; set; }
我觉得我只是在这里缺少语法,但是不幸的是我找不到关于它的信息。如果可以的话,我将不胜感激。
答案 0 :(得分:7)
您将创建一个ParentComponent
和一个ChildComponent
。 ParentComponent
的标记应具有以下内容
<CascadingValue Value=this>
@ChildContent
</CascadingValue>
@code
{
[Parameter]
public RenderFragment ChildContent { get; set; }
}
现在,您的孩子将可以像这样访问父母
[CascadingParameter]
public ParentComponent ParentComponent { get; set; }
在OnInitialized
方法中,您可以调用ParentComponent.RegisterChild(this);
,在IDisposable.Dispose
中,您可以调用ParentComponent.UnregisterChild(this);
这是您可以将自己添加到父类中以保留ChildComponent列表的两种方法。
布拉泽大学here上有完整的演练。