#wpf #events
#wpf #Мероприятия
Вопрос:
Я хотел бы получить четкое объяснение о том, как определить в каждой ситуации, какой элемент управления является отправителем, а какой — источником для события маршрутизируемого события WPF как в случае туннелирования, так и в случае событий с пузырьками.
Редактировать: Предположим, у вас есть обработчик событий и два элемента управления, один дочерний элемент другого. Обработчик находится в родительском элементе управления. Как бы я узнал заранее и без отладки, какой элемент управления передается как отправитель, а какой как e.source? И меняется ли это, когда вы рассматриваете события с пузырьками или туннелированием?Общая концепция событий мне понятна, но я хотел бы понять, какой параметр использовать в eventhandler для идентификации обоих элементов управления без отладки
Комментарии:
1. Звучит так, как будто вы хотите, чтобы мы погуглили для вас
Ответ №1:
Вероятно, не существует исчерпывающего «четкого объяснения», потому что существует так много способов, которыми вы могли бы получить события. Особенно, когда используется много событий EventArgs.Empty
, потому что нет других деталей, кроме источника.
http://msdn.microsoft.com/en-us/library/17sde2xt (v = VS.100).aspx
или, более конкретно:
RoutedEvent: источник против OriginalSource
У вас есть конкретный вопрос, на который вам нужен ответ?
Редактировать: из приведенной выше статьи, с ответом, похожим на ваш комментарий
Рассмотрим пользовательский элемент управления (в этом примере называемый CustomControl1), который состоит из текстового блока. Когда в текстовом блоке вызывается событие MouseDown, свойством OriginalSource будет TextBlock, но в обработчике CustomControl1 источник будет изменен на объект CustomControl1, чтобы другие элементы вдоль маршрута события знали, что CustomControl1 получил наведение курсора мыши.
Комментарии:
1. Я говорю о событиях WPF. Эта ссылка более подходящая: msdn.microsoft.com/en-us/library/ms742806.aspx
2. @luca: похоже, у вас есть свой ответ? Я не уверен, что эта ссылка не учитывает. Не могли бы вы быть более конкретными?
3. добавлена ссылка с дополнительными объяснениями того, что это такое, почему они отличаются.
4. Предположим, у вас есть обработчик событий и два элемента управления, один дочерний элемент другого. Обработчик находится в родительском элементе управления. Как бы я узнал заранее и без отладки, какой элемент управления передается как отправитель, а какой как e.source? И меняется ли это, когда вы рассматриваете события с пузырьками или туннелированием? Общая концепция событий мне ясна, но я хотел бы понять, какой параметр использовать в eventhandler для идентификации обоих элементов управления без отладки.