Reference 如何将事件更改从子组件传递到父组件

Reference 如何将事件更改从子组件传递到父组件,reference,components,blazor,blazor-client-side,Reference,Components,Blazor,Blazor Client Side,我试图跟进“捕获对元素的引用”以将更改从子组件传递给父组件,但它不起作用 能帮我一下吗? a) 代码有问题吗? b) 在那里我可以找到“Console.WriteLine”信息,因为我无法从vs输出窗口中找到它 1. ParentComponent.razor @page "/parentcomponent" @using BlazorApp.Components <h1>Parent Component</h1> <p>ParentYear: @Par

我试图跟进“捕获对元素的引用”以将更改从子组件传递给父组件,但它不起作用

能帮我一下吗? a) 代码有问题吗? b) 在那里我可以找到“Console.WriteLine”信息,因为我无法从vs输出窗口中找到它

1. ParentComponent.razor

@page "/parentcomponent"
@using BlazorApp.Components

<h1>Parent Component</h1>

<p>ParentYear: @ParentYear</p>

<ChildComponent @ref="ChildComponent1" @bind-Year="ParentYear" />

@code {
    private int ParentYear = 1978;

    ChildComponent ChildComponent1 = new ChildComponent();

    protected override void OnInitialized()
    {
        ChildComponent1.YearChanged += ChildFiredEvent;
    }

    public void ChildFiredEvent(int _year)
    {
        ParentYear = _year;
        Console.WriteLine(ParentYear.ToString());
        StateHasChanged();
    }

}

2. Childcomponent.razor

<h2>Child Component</h2>

<p>ChildYear: @Year</p>

<button class="btn btn-primary" @onclick="ChangeTheYear">Change Year to 1986</button>

@code {
    [Parameter]
    public int Year { get; set; }

    [Parameter]
    public Action<int> YearChanged { get; set; }

    private void ChangeTheYear()
    {
        Year = 1986;
        YearChanged?.Invoke(Year);
    }
}
1。剃须刀
@页面“/parentcomponent”
@使用BlazorApp.Components
父组件
ParentYear:@ParentYear

@代码{ 私立学校=1978年; ChildComponent ChildComponent 1=新的ChildComponent(); 受保护的覆盖无效OnInitialized() { ChildComponent 1.YearChanged+=ChildFiredEvent; } 公共无效儿童(国际年) { 父年=_年; Console.WriteLine(ParentYear.ToString()); StateHasChanged(); } } 2.儿童剃须刀 子组件 儿童年:@年

更改年份至1986年 @代码{ [参数] 公共整数年{get;set;} [参数] 公共操作{get;set;} 私人无效更改年份() { 年份=1986年; YearChanged?.Invoke(年); } }
在子组件中,YearChanged声明应如下所示:

public EventCallBack<int> YearChanged { get; set; }
await YearChanged.InvokeAsync(newValue);

在子组件中,YearChanged声明应如下所示:

public EventCallBack<int> YearChanged { get; set; }
await YearChanged.InvokeAsync(newValue);

非常感谢你们,萨默和大卫。我相信我使用了以前的blazor方法。现在它与@ref.Cheers一起工作很好!!!这是代码

@page "/parentcomponent"
@using BlazorApp.Components

<h1>Parent Component</h1>

<p>ParentYear: @ParentYear</p>

<ChildComponent @ref="ChildComponent1" @bind-Year="ParentYear" />

@code {
    private int ParentYear = 1978;

    ChildComponent ChildComponent1 = new ChildComponent();
}

<p>ChildYear: @Year</p>

<button class="btn btn-primary" @onclick="ChangeTheYear">Change Year to 1986</button>

@code {
    [Parameter]
    public int Year { get; set; }

    [Parameter]
    public Microsoft.AspNetCore.Components.EventCallback<int> YearChanged { get; set; }
    enter code here
    private void ChangeTheYear()
    {
        Year = 1986;
        YearChanged.InvokeAsync(Year);
    }
}
@page”/parentcomponent
@使用BlazorApp.Components
父组件
ParentYear:@ParentYear

@代码{ 私立学校=1978年; ChildComponent ChildComponent 1=新的ChildComponent(); } 儿童年:@年

更改年份至1986年 @代码{ [参数] 公共整数年{get;set;} [参数] public Microsoft.AspNetCore.Components.EventCallback YearChanged{get;set;} 在这里输入代码 私人无效更改年份() { 年份=1986年; YearChanged.InvokeAsync(年); } }
非常感谢你们,萨默和大卫。我相信我使用了以前的blazor方法。现在它与@ref.Cheers一起工作很好!!!这是代码

@page "/parentcomponent"
@using BlazorApp.Components

<h1>Parent Component</h1>

<p>ParentYear: @ParentYear</p>

<ChildComponent @ref="ChildComponent1" @bind-Year="ParentYear" />

@code {
    private int ParentYear = 1978;

    ChildComponent ChildComponent1 = new ChildComponent();
}

<p>ChildYear: @Year</p>

<button class="btn btn-primary" @onclick="ChangeTheYear">Change Year to 1986</button>

@code {
    [Parameter]
    public int Year { get; set; }

    [Parameter]
    public Microsoft.AspNetCore.Components.EventCallback<int> YearChanged { get; set; }
    enter code here
    private void ChangeTheYear()
    {
        Year = 1986;
        YearChanged.InvokeAsync(Year);
    }
}
@page”/parentcomponent
@使用BlazorApp.Components
父组件
ParentYear:@ParentYear

@代码{ 私立学校=1978年; ChildComponent ChildComponent 1=新的ChildComponent(); } 儿童年:@年

更改年份至1986年 @代码{ [参数] 公共整数年{get;set;} [参数] public Microsoft.AspNetCore.Components.EventCallback YearChanged{get;set;} 在这里输入代码 私人无效更改年份() { 年份=1986年; YearChanged.InvokeAsync(年); } }
如果你读到@chris_sainty关于这个主题的博文,这是我找到的最清楚的解释。如果你想做什么,如果你读到@chris_sainty关于这个主题的博文,这是我找到的最清楚的解释。