UIElement.Holding Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит, когда в противном случае происходит необработанное взаимодействие удержания над областью проверки попадания этого элемента.
public:
virtual event HoldingEventHandler ^ Holding;
// Register
event_token Holding(HoldingEventHandler const& handler) const;
// Revoke with event_token
void Holding(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::Holding_revoker Holding(auto_revoke_t, HoldingEventHandler const& handler) const;
public event HoldingEventHandler Holding;
function onHolding(eventArgs) { /* Your code */ }
uIElement.addEventListener("holding", onHolding);
uIElement.removeEventListener("holding", onHolding);
- or -
uIElement.onholding = onHolding;
Public Custom Event Holding As HoldingEventHandler
<uiElement Holding="eventhandler"/>
Тип события
Комментарии
Сенсорный ввод может создавать действие "Удержание ", но устройства мыши, как правило, не могут. Дополнительные сведения см. в разделе Обработка входных данных указателя.
События Tapped, DoubleTapped и RightTapped происходят только после удаления точки касания. Но исходное событие Holding происходит, когда точка касания все еще находится в контакте. Это событие возникает, если точка касания остается примерно в той же позиции PointerPoint в течение определенного периода времени. Точное время того, что система интерпретирует как действие удержания, регулируется пользователями с помощью параметров системы.
Удержание предназначено для информационного пользовательского интерфейса, но для таких взаимодействий, как отображение контекстного меню, следует использовать RightTapped . Вы можете сначала обработать удержание, чтобы отобразить подсказку о том, что меню появится, но для отображения самого меню используйте обработчик RightTapped . Дополнительные сведения о том, как использовать взаимодействие с удержанием в структуре приложения, см. в разделе Проектирование сенсорного взаимодействия или рекомендации по пользовательскому интерфейсу для пользовательских взаимодействий с пользовательским интерфейсом.
Хранение событий обычно происходит парами. Когда действие впервые интерпретируется как действие "Удержание", основанное на отсутствии движения в течение определенного периода времени, срабатывает удержание со значением "Запущено" в данных события HoldingRoutedEventArgs. Когда действие Удержание завершается, возникает другое событие Удержания, на этот раз с состоянием HoldingStateсо значением Completed или Canceled.
Действие Удержание заканчивается на HoldingState как Завершено , если пользователь не перемещает указатель во время состояния удержания , а затем освобождает точки указателя, которые инициировали действие. В этом случае RightTapped срабатывает сразу после второго события Holding.
Действие Удержание заканчивается значением HoldingState как Отменено , если пользователь перемещает указатели, которые инициировали действие, или в редких ситуациях, таких как изменение состояния проверки нажатия элемента во время действия или захват другого указателя. Если действие Удержание заканчивается на HoldingState как Отменено, RightTapped не срабатывает.
Событие Holding представляет жест, а событие PointerPressed — событие ввода более низкого уровня. События Holding и PointerPressed могут возникать в результате одного взаимодействия с пользователем. Даже если элемент управления уже обрабатывает события указателя в логике элемента управления или обрабатывает манипуляции, это не препятствует срабатыванию функции удержания.
Событие Удержания потенциально является результатом нескольких точек указателя. Для событий жестов более высокого уровня, таких как Удержание, у вас больше нет немедленного доступа к сведениям PointerPoint , таким как отдельные значения PointerId или отдельные координаты. У вас есть доступ к типу устройства (PointerDeviceType) и для координат можно вызвать GetPosition, который дает среднее значение координат для удержания из нескольких точек указателя.
Удержание — это перенаправленное событие. Кроме того, для элемента isHoldingEnabled должно быть значение true , чтобы быть источником событий удержания (значение true — значение по умолчанию). Удержание родительских элементов можно обрабатывать, даже если isHoldingEnabled имеет значение false для родительского элемента, если событие перенаправляются в родительский элемент из дочернего элемента источника события, где IsHoldingEnabled имеет значение false. Дополнительные сведения о концепции перенаправленных событий см. в статье Общие сведения о событиях и перенаправленных событиях.
Для сенсорного ввода, а также событий, связанных с взаимодействием, или событий операций, которые являются следствием сенсорного ввода, элемент должен быть видимым для проверки нажатия. В таком случае элемент становится источником события и вызывает событие, сопоставленное с действием. UIElement.Visibility должен быть видимым. Другие свойства производных типов также влияют на видимость проверки попадания. Дополнительные сведения см. в разделе Общие сведения о событиях и перенаправленных событиях.
Удержание поддерживает возможность подключения обработчиков событий к маршруту, который будет вызываться, даже если данные события помечены как Handled. См . раздел AddHandler.
Определенные элементы управления среда выполнения Windows могут обрабатывать события Holding на основе классов. В этом случае элемент управления, вероятно, имеет переопределение для метода OnHolding. Дополнительные сведения о том, как работает обработка событий на основе классов, см. в статье Обзор событий и перенаправленных событий.
Tapped и Holding являются взаимоисключающими. Если действие прошло порог времени, чтобы считаться действием Удержания , оно также не считается действием Tap .
Всякий раз, когда функция Удержания срабатывает изначально, если элемент поддерживает события манипуляции с помощью значения ManipulationMode , отличного от значения ManipulationMode по умолчанию, срабатывает и ManipulationStarting . Если точка указателя остается в одном месте достаточно долго для обнаружения удержания, но после этого пользователь перемещает точки указателя, связанные с действием "Удержание", не освобождая их (что приводит к другому событию HoldingState с состоянием "Отменено"), могут также срабатывать другие события манипуляции, такие как ManipulationStarted и ManipulationDelta.
Удержание мыши и ввода пера или пера
По умолчанию при вводе мыши события удержания не создаются независимо от того, как долго удерживается кнопка мыши или какая кнопка удерживается. Однако при нажатии и отпускании правой кнопки мыши или эквивалентной кнопки мыши могут срабатывание rightTapped и некоторые устройства пера.
Примечание
Действия мыши можно рассматривать как действия удержания, если вы используете собственный GestureRecognizer и указываете HoldWithMouse в параметрах.