• Как мне вызвать событие в usercontrol и поймать его в файле mainpage?

    У меня есть пользовательский элемент управления usercontrol, что я построил и мне нужно уведомить главной странице (или любой родитель страницу что этот контроль в) когда кнопки в пользовательский элемент управления usercontrol, нажата как я могу вызвать событие в пользовательский элемент управления usercontrol, и поймать его на главной странице? я попытался с помощью статических и многие предложил мне пойти на мероприятия!

  • Ответы

  • Проверьте событие Клокоча -- 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(new object(), 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.

    Или если вы ищете более отделенных решения вы можете использовать мессенджер Издатель / подписчик модели, такие как в mvvm свет Посланник здесь