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.Visibility должен быть видимым. Другие свойства производных типов также влияют на видимость проверки попадания. Дополнительные сведения см. в разделе Общие сведения о событиях и перенаправленных событиях.

PointerEntered поддерживает возможность подключения обработчиков событий к маршруту, который будет вызываться, даже если данные события помечены как Handled. См. раздел AddHandler.

Определенные элементы управления среда выполнения Windows могут иметь обработку на основе классов для входного события PointerEntered. В этом случае элемент управления, вероятно, имеет переопределение метода OnPointerEntered. Обычно событие не помечается обработчиком класса, поэтому событие по-прежнему PointerEntered может обрабатываться пользовательским кодом элемента управления в пользовательском интерфейсе. Дополнительные сведения о том, как работает обработка событий на основе классов, см. в статье Общие сведения о событиях и перенаправленных событиях.

Pointer Input для ввода с помощью мыши и пера

Устройство ввода с помощью мыши имеет экранный курсор, который отображается при каждом перемещении мыши, даже если в это время кнопка мыши не нажата. Событие PointerEntered будет предшествовать первому PointerMoved событию, вызванному элементом . Аналогичное поведение доступно для ввода устройства с помощью пера, где устройства ввода могут обнаружить, что перо наведено на поверхность устройства ввода (IsInRange), но не касается его. Таким образом, входные данные с помощью мыши и пера будут вызывать PointerEntered события в несколько разных случаях, чем события сенсорного ввода. Дополнительные сведения см. в статье Взаимодействие с помощью мыши.

PointerEntered для сенсорного ввода

Точка касания обнаруживается только в том случае, если палец касается поверхности. Всякий раз, когда сенсорное действие приводит к возникновению события PointerPressed , этому событию непосредственно предшествует PointerEntered событие, при этом все данные события являются одинаковыми сведениями для двух событий (одинаковый идентификатор указателя, одинаковое положение и т. д.). Другими словами, указатель считается входить в элемент в тот момент и позицию, в которую элемент касается точкой касания.

Кроме того, точка касания будет создаваться PointerEntered , если указатель остается в постоянном контакте с поверхностью при ее перемещении и входит в границы проверки попадания элемента. Для таких видов сенсорных действий также возможно, что действие может быть обработано как манипуляция или жест, а не событие указателя. Дополнительные сведения см. в разделе Обработка входных данных указателя.

Поведение перенаправленного события для PointerEntered

PointerEntered является перенаправленным событием. Дополнительные сведения о концепции перенаправленных событий см. в статье Общие сведения о событиях и перенаправленных событиях. Можно определить несколько PointerEntered событий для элементов в пользовательском интерфейсе XAML, в том числе для элементов, которые находятся в отношениях "родители-потомки". В типичной композиции пользовательского интерфейса дочерние элементы находятся где-то в пределах границ родительского элемента, поэтому PointerEntered событие сначала происходит для родительского элемента, когда указатель перемещается в родительский элемент, а затем для дочернего элемента, когда указатель перемещается туда. Событие PointerEntered обычно не направляется к родительскому элементу, когда дочерний элемент запускает его, так как концептуально указатель уже находится в пределах родительских границ, и система входных данных также не может перенаправить PointerEntered вхождение события в родительский элемент. Как правило, вы не хотите PointerEntered , чтобы события маршрутизировать в любом случае, вы хотите только обработать их от отправителя. Вы можете явно запретить маршрутизацию событий, задав для параметра Handled значение true в обработчике.

В редких случаях можно увидеть пузырек PointerEntered событий для родительского объекта. Например, если вы использовали RenderTransform для смещения дочернего элемента за пределами его родительского элемента, событие будет пузырьков в родительский элемент при вводе дочернего элемента и предоставляет сведения о событии, сообщаемые по тому, как дочерний элемент произвел событие.

Запись указателя

Если другой элемент захватил указатель, не срабатывает, PointerEntered даже если захваченный указатель входит в границы элемента. Однако, если захват указателя освобождается, пока указатель находится на элементе, PointerEntered будет запускаться, даже если предположить, что указатель мог оставаться неподвижным в этом случае. Значение GetCurrentPoint из данных события может быть точкой где-то в середине элемента, а не точкой по его краям, так как указатель уже находился на элементе при освобождении записи. Дополнительные сведения о захвате указателя см. в разделе Взаимодействие с захватом указателя и мышью.

Визуальные состояния PointerOver для элементов управления

Элементы управления, имеющие шаблоны элементов управления, могут применять визуальные состояния, которые активны, только если указатель находится над границами элемента управления. Для получения или изменения этого поведения не всегда требуется обработать PointerEntered или PointerExited . Возможно, потребуется повторно создать шаблон элемента управления. Если вы наследуете от существующего элемента управления, который уже имеет низкоуровневую обработку входных данных, которая вызывает визуальные состояния, необходимо предоставить визуальное состояние с именем PointerOver в "CommonStates" VisualStateGroup, а встроенная логика элемента управления будет загружать это визуальное состояние при наведении указателя на элемент управления. Визуальное состояние указателя часто присутствует в элементах управления, которые можно вызвать или выбрать, например Button или ListViewItem. Если вы наследуете от базового класса , например Control , который не имеет встроенной обработки входных событий, которая вызывает визуальные состояния, может потребоваться переопределить OnPointerEntered и OnPointerExited самостоятельно, чтобы получить такое поведение.

Применяется к

См. также раздел