Ребенок подписывается на события родителей - PullRequest
0 голосов
/ 20 мая 2019

В Blazor довольно просто подписать родительский элемент управления на дочерние события: в дочернем я просто объявляю

[Параметр] Func OnClick {get;задавать;}

и назначить родительский метод для OnClick в разметке дочернего элемента управления.Тем не менее, как я могу добиться противоположного?Я хочу, чтобы ребенок реагировал на события из родительского контроля.Пока я просто вызываю дочерние методы от родителя - есть ли лучший подход?

1 Ответ

1 голос
/ 20 мая 2019

Вы можете определить событие в родительском компоненте, которое может обрабатываться подписчиками (например, дочерним компонентом) при возникновении события.

В родительском компоненте

Определить событиеобработчик, скажем, 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();

Надеюсь, это поможет ...

...