Что такое предварительные события WPF?

Посмотрите django-contrib-requestprovider , возможно, вы можете его использовать.

73
задан Akash Kava 22 September 2009 в 13:40
поделиться

4 ответа

Из программирования WPF - Крис Селлс и Ян Гриффит

За исключением прямых событий, WPF определяет большинство перенаправленных событий в пары - один туннельный и другой бурление. Имя события туннелирования всегда начинается с "Предварительный просмотр" и поднял первым. Это дает родителям шанс увидеть событие до него достигает ребенка. Далее следует пузырящийся аналог. В большинстве случаев, вы будете обрабатывать только бурлящий. Предварительный просмотр будет обычно используется для

  • блокировки события ( e.Handled = true )
  • заставляет родительский элемент делать что-то заранее для нормальной обработки событий.

например, если UI Tree = Button contains Grid contains Холст содержит эллипс
Нажатие на эллипс приведет к (MouseDownButton съедается Button, а вместо этого увеличивается Click.)

PreviewMouseDownButton
PreviewMouseDownGrid
PreviewMouseDownCanvas
PreviewMouseDownEllipse
MouseDownEllipse
MouseDownCanvas
MouseDownGrid
119
ответ дан 24 November 2019 в 11:18
поделиться

Я нашел эту запись в блоге действительно полезной для описания разницы:

http://joshsmithonwpf.wordpress.com/2007/06/22/overview-of-routed-events-in -wpf /

У вас есть визуальное дерево, когда событие происходит в элементе в дереве, сначала событие предварительного просмотра перемещается от корня к элементу (туннелирование): событие PreviewKeyDown будет вызвано для всех этих элементов, а затем «нормальное» событие переместится от элемента к корню (всплытие).

8
ответ дан 24 November 2019 в 11:18
поделиться

Это различие связано с перенаправленными событиями, именно так WPF реализует свою стратегию обработки событий. Стандартное имя события (например, KeyDown и т. Д.) Подразумевает стратегию восходящей маршрутизации. Те, перед которыми стоит «Preview» (например, PreviewKeyDown и т. Д.), Подразумевают стратегию туннельной маршрутизации. Вы можете прочитать об этих стратегиях более подробно здесь . По сути, когда событие в WPF вызывается, оно сначала перемещается от самого верхнего элемента вниз по визуальному дереву к элементу, который вызвал событие, и, наконец, возвращается вверх. По пути вниз по дереву вы встретите событие PreviewKeyDown, а на обратном пути вы встретите событие KeyDown в указанном порядке.

3
ответ дан 24 November 2019 в 11:18
поделиться

По сути, это то же самое событие, но происходит прямо перед главным событием. Они существуют, поэтому вы можете прослушивать эти типы событий, не мешая нормальному поведению элемента управления, когда эти события происходят.

Например, кнопки делают что-то, когда вы щелкаете или вводите мышью, и т. Д. Если вы обрабатываете эти события самостоятельно, вы должны сделать убедитесь, что вы делаете то же самое, иначе ваша кнопка не будет работать так же. События предварительного просмотра дают вам событие на той же временной шкале, не беспокоясь о том, чтобы испортить существующие функции.

Это особенно полезно при работе с настраиваемыми стилями / триггерами / шаблонами управления. Когда вы начинаете переопределять внешний вид / поведение элемента управления.

Итак, в вашем Control выполните основную работу, которую вы хотите в событии OnKeyDown, и оставьте событие предварительного просмотра для использования кем-то другим, вот как я работаю с ними.

3
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: