Подтвердить что ты не робот

Как я могу создать событие в usercontrol и поймать его на главной странице?

У меня есть UserControl, и мне нужно сообщить родительской странице, что нажата кнопка в UserControl. Как поднять событие в UserControl и перехватить его на главной странице? Я попытался использовать static, и многие предложили мне пойти на события!

4b9b3361

Ответ 1

Проверьте событие Bubbling - http://msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx

Изменить, чтобы добавить быстрый пример: (и дополнительное редактирование для улучшения форматирования)

Пользовательский контроль

public event EventHandler StatusUpdated;

private void FunctionThatRaisesEvent()
{
    //Null check makes sure the main page is attached to the event
    if (this.StatusUpdated != null)
       this.StatusUpdated(this, new EventArgs());
}

Главная страница/Форма

public void MyApp()
{
     //USERCONTROL = your control with the StatusUpdated event
     this.USERCONTROL.StatusUpdated += new EventHandler(MyEventHandlerFunction_StatusUpdated);
}

public void MyEventHandlerFunction_StatusUpdated(object sender, EventArgs e)
{
         //your code here
}

Ответ 2

Просто добавьте событие в свой контроль:

public event EventHandler SomethingHappened;

и поднимите его, если хотите уведомить родителя:

if(SomethingHappened != null) SomethingHappened(this, new EventArgs);

Если вам нужны специальные EventArgs, попробуйте EventHandler<T> вместо T beeing типа, полученного из EventArgs.

Ответ 3

Или, если вы ищете более развязанное решение, вы можете использовать модель издателя/подписчика мессенджера, такую ​​как MVVM Light Messenger здесь