使用 TreeView 控件在 Tab 内进行 Blazor 路由或导航

问题描述

我无法在 Blazor 中实现简单的路由,为了说明该场景,我有一个包含 Tab 控件的选项卡组件,在一个选项卡项中我有一个包含 TreeView 控件的 TreeView 组件。现在,当我尝试单击 TreeView 项目时,我会在 @Body 中显示与它相邻的特定项目的相关视图。一切看起来都是连线的,但当我点击 TreeView 项目时,它显示了视图,但同时给了我一个错误

错误system.invalidOperationException:“BlazorApp.Pages.TabComponent”类型的对象没有与名称“Body”匹配的属性

  • TabComponent (@page “/tab”) - 包含 Tab 控件
    • TreeViewComponent (@page “/tab/treeview”) - 包含 TreeView 控件和 @Body
      • @Body (@page “/tab/treeview/view1”) 显示选中的 TreeView 项 (View1) 组件

TabComponent.razor

@page "/tab"
@inherits ComponentBase

<BSTabGroup>
    <BSTabList>
        <BSTab>
            <BSTabLabel>TreeView</BSTabLabel>
            <BSTabContent>
                <TreeViewComponent></TreeViewComponent>
            </BSTabContent>
        </BSTab>
    </BSTabList>
    <BSTabSelectedContent></BSTabSelectedContent>
</BSTabGroup>

TreeViewComponent.razor

@page "/tab/treeview"
@layout TabComponent
@inherits LayoutComponentBase
<div class="container remove-margin">
    <div class="row">
        <div class="col-md-3">
            <TreeView Data="TreeDataSource" Nodeselected="@TreeNodeselect"></TreeView>
        </div>
        <div class="col-md-9" style="height: 100%">
            <div class="card" style="height: 100%">
                <div class="card-header">
                    @Body
                </div>
            </div>
        </div>
    </div>
</div>

@code {
    protected void TreeNodeselect(object args)
    {
        NavigationManager.Navigateto("/tab/treeview/view1");
    }
}

View1Component.razor

@page "/tab/treeview/view1"
@inherits ComponentBase
@layout TreeViewComponent

<h1>View 1</h1>

我不明白为什么会抱怨在 TabComponent 级别拥有一个看似不必要的 Body。

我怎样才能顺利地制定出这个简单的路线?

已编辑

Tab 控件来自 Radzen Blazor 库,但是 TreeView 控件是我自己定制的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)