孩子订阅父母的活动

时间:2019-05-20 20:00:33

标签: blazor blazor-server-side

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

  

[Parameter] Func OnClick {get;组; }

,然后在子控件标记中将父方法分配给OnClick。但是,我怎么能做到相反呢?我希望孩子对父控件的事件做出反应。到目前为止,我只是从父级简单地调用子级方法-有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

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

在父组件上

定义事件处理程序,例如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();

希望这对您有帮助...