WPF — обработка RoutedEvent в родительском элементе для определенного экземпляра элемента управления

В моем пользовательском элементе управления у меня есть несколько текстовых полей, например. Текстовое поле1, Текстовое поле2.

В родительском я хочу обрабатывать события KeyDown только из Textbox1, а не все Textbox

Я добавил обработчик в родителя

this.AddHandler(TextBox.KeyDownEvent, new RoutedEventHandler(OnTextboxGoToPageKeyDown));

но, конечно, это будет обрабатывать все события KeyDown, которые мне не нужны.

Должен ли я добавить некоторую условную логику в RoutedEventHandler, чтобы проверить, откуда было вызвано событие?

или есть лучший способ?

Как лучше всего это сделать?

Спасибо.


person empo    schedule 10.06.2010    source источник
comment
Разве вы не можете просто подписаться на TextBox1.KeyDown?   -  person treehouse    schedule 10.06.2010
comment
Метод AddHandler принимает только класс, а не экземпляр.   -  person empo    schedule 10.06.2010


Ответы (1)


RoutedEventArgs в вашем OnTextboxGoToPageKeyDown имеет свойство с именем Source, которое имеет ссылки на объект, вызвавший событие. Вы можете запросить это свойство, когда вам нужно выполнить свою логику.

ХТН

person Marcote    schedule 10.06.2010
comment
Да, я так и думал. За исключением того, что это свойство OriginalSource, а не Source. - person empo; 10.06.2010