Как вызвать событие в usercontrol и поймать его в mainpage?
у меня есть UserControl
, и мне нужно уведомить родительскую страницу, что кнопка в . Как я могу поднять событие в UserControl
и поймать его на главной странице? Я пробовал использовать static
, и многие предложили мне пойти на мероприятия!
3 ответов
Проверьте событие пузырясь -- http://msdn.microsoft.com/en-us/library/aa719644%28vs.71%29.aspx
Edit, чтобы добавить быстрый пример: (и дополнительное редактирование для улучшения форматирования)
Контроль Пользователей
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
}
просто добавьте событие в свой элемент управления:
public event EventHandler SomethingHappened;
и поднять его, когда вы хотите уведомить родителя:
if(SomethingHappened != null) SomethingHappened(this, new EventArgs);
Если вам нужны пользовательские EventArgs попробуйте EventHandler<T>
вместо с T
быть типом, производным от EventArgs
.
или если вы ищете более развязанное решение, вы можете использовать модель издателя / подписчика messenger, такую как MVVM Light Messenger здесь