Blazor 订阅父项的子项';s事件

Blazor 订阅父项的子项';s事件,blazor,blazor-server-side,Blazor,Blazor Server Side,在Blazor中,订阅子事件的父控件是很简单的:在子事件中,我只声明 [参数]Func OnClick{get;set;} 并将父控件的方法指定给子控件标记中的OnClick。然而,我怎样才能达到相反的效果呢?我希望子控件对来自父控件的事件作出反应。到目前为止,我只是简单地从父级调用子方法-有更好的方法吗?您可以在父级组件上定义一个事件,在引发事件时,订阅者(例如,子组件)可以处理该事件 关于父组件 定义一个事件处理程序,比如StateChanged public event EventHand

在Blazor中,订阅子事件的父控件是很简单的:在子事件中,我只声明

[参数]Func OnClick{get;set;}


并将父控件的方法指定给子控件标记中的OnClick。然而,我怎样才能达到相反的效果呢?我希望子控件对来自父控件的事件作出反应。到目前为止,我只是简单地从父级调用子方法-有更好的方法吗?

您可以在父级组件上定义一个事件,在引发事件时,订阅者(例如,子组件)可以处理该事件

关于父组件 定义一个事件处理程序,比如StateChanged

public event EventHandler StateChanged;
从父级上的代码引发事件 关于子组件
希望这有帮助……

这样做不要求父级上的事件是静态的吗?否则,您需要在子组件中引用父组件,这可能很棘手。静态事件不是一个可怕的想法吗?
StateChanged?.Invoke(this, EventArgs.Empty); 
// Subscribe to the event defined on the parent component
protected async override Task OnInitAsync()
        {
            ParentComponent.StateChanged += OnStateChanged;
}

// Dispose of the component
        void IDisposable.Dispose()
        {
            ParentComponent.StateChanged -= OnStateChanged;
        }

        void OnStateChanged(object sender, EventArgs e) => Call_A_Method_That_Do_Something();