Мы с коллегой обсуждали перенаправленные события и пришли к некоторым вещам, которые не имели особого смысла. Прежде всего, какова цель события Direct
и почему события LeftMouseButtonDown
и PreviewLeftMouseButtonDown
являются прямыми, а не всплывающими и туннельными соответственно?
Согласно документации, события LeftMouseButtonDown
(и предварительный просмотр) ведут себя как всплывающие и туннелирующие события, за исключением того, что событие возникает и повторно возникает по мере того, как эти события пересекают дерево. Поскольку прямые события могут обрабатываться только источником события, из этого следует, что любое UIElement
может обрабатывать прямое событие, поскольку каждое из них вызывает событие и, следовательно, также является источником. (Разве повторное повышение события не отличается от повышения?). Почему тогда они не туннелируют и не пузырятся, как многие другие подобные события?
Ни мой коллега, ни я не могли придумать вариант использования, в котором мы когда-либо создавали бы пользовательское событие, используя прямую стратегию (хотя мы придумали некоторые для туннелирования и всплытия), но LeftMouseButtonDown
, одно из самых распространенных событий (если не САМОЕ распространенное) использует эту стратегию.
У кого-нибудь есть идеи о рациональности этого?
Спасибо!