UIElement.PointerEntered Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит, когда указатель входит в область теста попадания этого элемента.
public:
virtual event PointerEventHandler ^ PointerEntered;
// Register
event_token PointerEntered(PointerEventHandler const& handler) const;
// Revoke with event_token
void PointerEntered(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::PointerEntered_revoker PointerEntered(auto_revoke_t, PointerEventHandler const& handler) const;
public event PointerEventHandler PointerEntered;
function onPointerEntered(eventArgs) { /* Your code */ }
uIElement.addEventListener("pointerentered", onPointerEntered);
uIElement.removeEventListener("pointerentered", onPointerEntered);
- or -
uIElement.onpointerentered = onPointerEntered;
Public Custom Event PointerEntered As PointerEventHandler
<uiElement PointerEntered="eventhandler"/>
Тип события
Комментарии
Событие PointerEntered запускается в ответ на указатель, перемещающийся в ограничивающую область элемента. Сенсорные, мыши и перо-перо и перо-перо-перо, обрабатываются и управляются в качестве входных данных указателя в приложении. Любое из этих устройств и их взаимодействий PointerEntered может создать событие. Дополнительные сведения см. в разделе "Ввод указателя на дескриптор" , а также другие замечания в этом разделе.
PointerEntered — это перенаправленное событие. Дополнительные сведения о концепции перенаправленного события см. в разделе "События" и обзор перенаправленных событий.
Используйте обработчик на основе PointerEventHandler для обработки этого события.
Для действий касания, а также для событий взаимодействия или манипуляций, которые являются последствиями сенсорного действия, элемент должен быть видимым, чтобы быть источником события и запускать событие, связанное с действием. UIElement.Видимость должна быть видимой. Другие свойства производных типов также влияют на видимость попадания в тест. Дополнительные сведения см. в разделе "События" и обзор перенаправленных событий.
PointerEntered поддерживает возможность подключения обработчиков событий к маршруту, который будет вызываться, даже если данные события для события помечены как Handled. См. раздел AddHandler.
Определенные элементы управления среда выполнения Windows могут обрабатывать события ввода pointer Input на основе классов. В этом случае элемент управления, вероятно, имеет переопределение метода OnPointer Ввод. Обычно событие не помечается обработчиком классов, поэтому PointerEntered событие по-прежнему может обрабатываться пользовательским кодом для элемента управления в пользовательском интерфейсе. Дополнительные сведения о том, как работает обработка событий на основе классов, см. в разделе "События" и обзор перенаправленных событий.
Указатель на ввод указателя для ввода мыши и пера или пера или пера
Устройство ввода мыши имеет экранный курсор, видимый при перемещении мыши, даже если кнопка мыши не нажимается в то время. Событие PointerEntered предшествует первому PointerMoved событию, запущенному элементом. Аналогичное поведение доступно для ввода пера устройства, где входные устройства могут обнаружить, что перо наведено на поверхность входного устройства (IsInRange), но не касаясь его. Таким образом PointerEntered , входные данные мыши и пера устройства будут запускаться в несколько разных случаях, чем сенсорные события. Дополнительные сведения см. в разделе "Взаимодействие с мышью".
Указатель на ввод сенсорного ввода
Точка касания может быть обнаружена только в том случае, если палец касается поверхности. Каждый раз, когда сенсорное действие приводит к событию PointerPressed , это событие сразу же предшествует PointerEntered событию, при этом все данные события совпадают с данными для двух событий (один и тот же идентификатор указателя, одно и то же положение и т. д.). Другими словами, указатель считается вводом элемента в данный момент и положением, что элемент касается сенсорной точкой.
Кроме того, точка касания создаст PointerEntered , если указатель остается в постоянном контакте с поверхностью при перемещении и вводит границы тестирования попадания элемента. Для таких действий касания также возможно, что действие может обрабатываться как манипуляция или как жест, а не событие указателя. Дополнительные сведения см. в разделе "Ввод указателя на дескриптор".
Поведение перенаправленного события для PointerEntered
PointerEntered — это перенаправленное событие. Дополнительные сведения о концепции перенаправленного события см. в разделе "События" и обзор перенаправленных событий. Можно определить несколько PointerEntered событий для элементов в пользовательском интерфейсе XAML, включая элементы, которые находятся в связи с родительским дочерним элементом. В типичной композиции пользовательского интерфейса дочерние элементы находятся в пределах границ родительского элемента, поэтому PointerEntered событие сначала будет происходить для родительского элемента при переходе указателя на родительский элемент, а затем для дочернего элемента при перемещении указателя туда. Событие PointerEntered обычно не пузырится на родительский элемент, когда дочерний элемент запускает его, так как концептуально указатель уже находится в родительских границах, и это будет запутано для входной системы, чтобы маршрутизировать PointerEntered вхождение события в родительский элемент тоже. Как правило, вы не хотите PointerEntered , чтобы события маршрутивали в любом случае, вы хотите обрабатывать их только от отправителя. Вы можете явным образом предотвратить маршрутизацию событий, установив для обработчика значение Handledtrue.
В редких случаях можно увидеть PointerEntered пузырь события родительскому элементу. Например, если вы использовали RenderTransform для смещения дочернего элемента вне границ родительского элемента, событие пузырится на родительский элемент при вводе дочернего элемента и предоставляет сведения о событии, как сообщается о том, как дочерний элемент запустил событие.
Запись указателя
Если другой элемент захватил указатель, PointerEntered он не будет работать, даже если захваченный указатель вводит границы элемента. Тем не менее, если запись указателя освобождается, пока указатель находится над элементом, PointerEntered будет срабатывает, даже думал, что указатель, возможно, остался неподвижным в этом случае. Значение GetCurrentPoint из данных событий может быть точкой в середине элемента, а не точкой по краям, так как указатель уже был над элементом при освобождении записи. Дополнительные сведения о захвате указателя см. в разделе "CapturePointer " или "Мышь".
Визуальные состояния PointerOver для элементов управления
Элементы управления с шаблонами элементов управления могут применять визуальные состояния, активные только в том случае, если указатель находится через границы элемента управления. Для получения или изменения этого поведения не всегда требуется обрабатывать или изменять PointerEnteredPointerExited . Возможно, потребуется повторно шаблонировать элемент управления. Если вы используете существующий элемент управления, который уже имеет низкоуровневую обработку входных данных, которая вызывает визуальные состояния, необходимо предоставить визуальное состояние с именем PointerOver в VisualStates VisualStateGroup, а встроенная логика управления загружает это визуальное состояние всякий раз, когда указатель находится над элементом управления. Визуальное состояние указателя часто присутствует в элементах управления, которые можно вызвать или выбрать, например Button или ListViewItem. Если вы используете базовый класс, например Control , который не имеет встроенной обработки событий ввода, которая вызывает визуальные состояния, может потребоваться переопределить OnPointer Input и OnPointerExited самостоятельно, чтобы получить это поведение.