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