如何在@Body中使用@bind PropertyName

如何在@Body中使用@bind PropertyName,bind,blazor,Bind,Blazor,我有一个有很多页面的项目。结构是:父页面,包括菜单、标题和上下文。任务是将一些字符串从上下文页面发送到标题。问题是:如何在@Body上使用@bind PropertyName MainLayout.razor: @inherits LayoutComponentBase <div class="sidebar"> <NavMenu /> </div> <div class="main"> <div class="top-

我有一个有很多页面的项目。结构是:父页面,包括菜单、标题和上下文。任务是将一些字符串从上下文页面发送到标题。问题是:如何在
@Body
上使用
@bind PropertyName

MainLayout.razor:

@inherits LayoutComponentBase

<div class="sidebar">
    <NavMenu />
</div>

<div class="main">

    <div class="top-row px-4">
        <Header PageTitle="@_PageTitle" />
    </div>
        <div class="content px-4">
            @Body
        </div>
</div>
@code{
    private string _PageTitle { get; set; }
}
@继承LayoutComponentBase
@身体
@代码{
私有字符串_PageTitle{get;set;}
}
标题组件:

<div>Title: @PageTitle</div>
@code {
    [Parameter]
    public string PageTitle { get; set; }
}
@page "/plainpage"
<div> @PageTitle </div>

<Content />

@code{
    [Parameter]
    public string PageTitle { get; set; } = "Plain Page";

    public EventCallback<string> Initialized { get; set; }

    protected override void OnInitialized()
    {
        OnPageInitialized(); 
    }

    private Task OnPageInitialized()
    {
        return Initialized.InvokeAsync(PageTitle);
    }
}
Title:@PageTitle
@代码{
[参数]
公共字符串PageTitle{get;set;}
}
上下文组件:

<div>Title: @PageTitle</div>
@code {
    [Parameter]
    public string PageTitle { get; set; }
}
@page "/plainpage"
<div> @PageTitle </div>

<Content />

@code{
    [Parameter]
    public string PageTitle { get; set; } = "Plain Page";

    public EventCallback<string> Initialized { get; set; }

    protected override void OnInitialized()
    {
        OnPageInitialized(); 
    }

    private Task OnPageInitialized()
    {
        return Initialized.InvokeAsync(PageTitle);
    }
}
@page”/plainpage
@页面标题
@代码{
[参数]
公共字符串PageTitle{get;set;}=“普通页面”;
公共事件回调已初始化{get;set;}
受保护的覆盖无效OnInitialized()
{
OnPageInitialized();
}
私有任务OnPageInitialized()
{
返回初始化。InvokeAsync(页面标题);
}
}

如果不是
@Body
我有
组件,我会做
。但是如何使用
@Body

最简单的方法是使用CascadingValue,“上下文”页面可以使用该值回调布局

因此,在主布局中,将@Body包装在CascadingValue中


@身体
在主布局的
@code
中创建一个公共方法

publicsvoidsomemethod(stringsomestring)
{
//使用某些字符串执行某些操作,例如设置PageTitle
}
在“上下文”的代码中使用CascadingParameter

[CascadingParameter]主布局主布局{get;set;}
受保护的覆盖无效OnInitialized()
{
mainLayout.SomeMethod(页面标题);
}
请参见以下内容: