首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Blazor组件注入到自行开发的TabControl中

如何将Blazor组件注入到自行开发的TabControl中
EN

Stack Overflow用户
提问于 2022-01-29 20:06:50
回答 1查看 33关注 0票数 0

我发现了一个非常简单的视频,我用它来构建一个TabControl。或多或少,这是一个很好的模板。

这个youtube视频可以在这里找到:https://www.youtube.com/watch?v=EMWfM3_v0J4

但是我现在要做的是用它构建一个组件。我想知道如何从外部插入其他组件?

我想在我的Blazor代码中做以下操作:

代码语言:javascript
复制
<TabControlComponent>
  <Component1 Title="..." />
  <Component2 ... />
  <Component3 />
  <Component4 />
  <Component5 />
</TabControlComponent>

个别项目的标题如何显示在按钮上,我很清楚。但我不清楚如何从外部插入组件。

组件的代码如下所示。

代码语言:javascript
复制
<div class="btn-group">

    @foreach (var item in types)
    {
        if (Array.IndexOf(types, item) == selected)
        {
            <button class="btn btn-primary">@item.Name</button>
        }
        else
        {
            <button class="btn btn-secondary" @onclick="() => selected = Array.IndexOf(types, item)">@item.Name</button>
        }
    }

</div>

@GetRenderFragment(types[selected]);

@code {

    RenderFragment GetRenderFragment(Type type)
    {
        RenderFragment rf = builder =>
        {
            builder.OpenComponent(0, type);
            builder.CloseComponent();
        };
        return rf;
    }

    int selected = 0;

    [Parameter]
    public ComponentBase[] Components { get; set; }

    Type[] types => Components.Select(c => c.GetType()).ToArray();

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-30 11:27:52

TabControlComponent.razor代码中的这一行应该包含组件数组。

代码语言:javascript
复制
[Parameter]
public ComponentBase[] Components { get; set; }

在父组件中,可以定义如下组件的数组

代码语言:javascript
复制
<TabControlComponent Components = @components>
</TabControlComponent>

@code{
ComponentBase[] components = {new component1, new component2, new component3};
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70909289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档