Перехват событий из вложенного пользовательского элемента управления - PullRequest
0 голосов
/ 23 января 2011

У меня есть несколько пользовательских элементов управления. Иерархия выглядит следующим образом:

A содержит B
B содержит C

В моем контроле C есть кнопка. Когда я нажимаю на него, хочу мое событие

public event EventHandler Print;

на поднят, а затем я хочу, чтобы элемент управления A перехватил это событие. Как я могу это сделать?

РЕДАКТИРОВАТЬ 1:
Я хочу поднять мое событие на ViewModel пользовательского элемента управления C

Ответы [ 3 ]

2 голосов
/ 23 января 2011

Есть 2 темы, которые могут помочь вам удовлетворить ваши потребности:

Командование и Маршрутизируемые события

Оба механизма созданы специально для wpfИерархическая структура.

Читайте оба, они помогут неизмеримо улучшить ваш опыт работы с wpf.

РЕДАКТИРОВАТЬ: Что-то более полезное.Поместите Button.Click = "" в элемент управления, в который вы хотите перехватить событие.Вы можете использовать свойство Tag кнопки для хранения идентифицирующей информации, чтобы ваш обработчик событий знал, что нажата правильная кнопка.

<Grid Button.Click="Button_ClickHandler">
    <Button Tag="PrintButton/>
</Grid>

В вашем коде для пользовательского элемента управления вам потребуется обработчик с именем Button_ClickHandler.

Приведенный выше метод использует события маршрутизатора.Однако я действительно рекомендую использовать команды.

0 голосов
/ 23 января 2011

Вы можете обернуть событие так:

class B
{
    private A a;

    public event EventHandler Print
    {
        add { a.Print += value; }
        remove { a.Print -= value; }
    }
}
0 голосов
/ 23 января 2011

Я думаю, вы хотите посмотреть на всплывающие события .

Обновление: я не видел тег wpf, вы должны смотреть на перенаправленные события

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...