【发布时间】:2020-09-29 14:02:15
【问题描述】:
我希望有人能提供帮助,因为我是 Blazor 的新手。
我已经开始了一个新的 Blazor 项目,并尝试在顶部栏中添加上下文按钮,这些按钮可以通过 / 基于子组件进行更改(当您导航到第 1 页时,它可以显示与导航到时不同的内容第 2 页)
这是我目前的方法:
TopBar.razor - 带有渲染片段的顶栏模板,以便我可以渲染不同的东西
@inject Learning.Data.TopBarContext TopBarContext
<div class="col-sm-6">@Context</div>
<span class="col-sm-2">@Text1</span>
<span class="col-sm-2">@Text2</span>
@code {
[Parameter]
private RenderFragment Context { get; set; }
[Parameter]
public string Text1 { get; set; } = "Not Set";
[Parameter]
public string Text2 { get; set; } = "Not Set";
}
MainLayout.razor - 我使用 TopBar 并将其级联到所有页面
@inherits LayoutComponentBase
<div class="sidebar">
<NavMenu />
</div>
<div class="main">
<div class="top-row px-4 auth">
<TopBar />
</div>
<div class="content px-4">
<CascadingValue Value="TopBar" Name="TopBar">
@Body
</CascadingValue>
</div>
</div>
@code {
private TopBar TopBar;
}
现在我要两个页面组件:
Page1.razor - 导航到时会在顶部栏中呈现 3 个按钮
@page "/page1"
<button>One</button>
<button>Two</button>
<button>Three</button>
@code {
}
Page2.razor - 导航到时会在顶部栏中呈现 2 个按钮
@page "/page2"
<button>One</button>
<button>Two</button>
@code {
}
我知道我可以使用下面的代码来获取级联值:
[CascadingParameter(Name = "TopBar")]
protected string TopBar { get; set; }
但不知道如何继续,我希望能够将整个组件向下级联,以便在 page1 中执行一些灵活的操作,例如:
<TopBar>
<button>One</button>
<button>Two</button>
<button>Three</button>
</TopBar>
我可能会以完全错误的方式进行此操作(我确实认为创建注册单例可能是一种方法),但您可以就如何完成此操作提供任何说明,我们将不胜感激!
非常感谢
尼克
【问题讨论】:
标签: data-binding blazor