Поделиться через


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

Проведение событий обычно происходит парами. Когда действие впервые интерпретируется как действие Удержания, основанное на отсутствии движения в течение определенного периода времени, срабатывает holdstate со значением Started в данных события HoldingRoutedEventArgs. Когда действие "Удержание " заканчивается, возникает другое событие удержания, на этот раз с HoldingStateсо значением "Завершено " или "Отменено".

  • Действие Удержание заканчивается на HoldingState как Завершено , если пользователь не перемещает указатель во время состояния удержания , а затем освобождает точки указателя, которые инициировали действие. В этом случае RightTapped срабатывает сразу после второго события Holding.

  • Действие Удержание заканчивается параметром HoldingState как Отменено , если пользователь перемещает указатели, которые инициировали действие, а также в редких ситуациях, таких как изменение состояния проверки нажатия элемента во время действия или захват другого указателя. Если действие "Удержание " заканчивается параметром HoldingState " Отменено", Функция RightTapped не срабатывает.

Событие Holding представляет жест, а событие PointerPressed — событие ввода более низкого уровня. События Holding и PointerPressed могут возникать в результате взаимодействия с одним пользователем. Даже если элемент управления уже обрабатывает события указателя в логике элемента управления или обрабатывает манипуляции, это не препятствует запуску объекта Holding.

Событие Holding потенциально является результатом нескольких точек указателя. Для событий жестов более высокого уровня, таких как Удержание, у вас больше нет немедленного доступа к сведениям PointerPoint , таким как отдельные значения PointerId или отдельные координаты. У вас есть доступ к типу устройства (PointerDeviceType) и для координат можно вызвать GetPosition, который дает среднее значение координат для удержания из нескольких точек указателя.

Удержание — это перенаправленное событие. Кроме того, для элемента isHoldingEnabled должно быть задано значение true , чтобы быть источником события Holding (значение true — это значение по умолчанию). Удержание родительских элементов можно обрабатывать, даже если isHoldingEnabled имеет значение false в родительском элементе, если событие перенаправится в родительский элемент из дочернего элемента источника событий, где IsHoldingEnabled имеет значение false. Дополнительные сведения о концепции перенаправленных событий см. в статье Общие сведения о событиях и перенаправленных событиях.

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

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

Определенные элементы управления среда выполнения Windows могут иметь обработку события Holding на основе классов. В этом случае элемент управления, вероятно, имеет переопределение для метода OnHolding. Дополнительные сведения о том, как работает обработка событий на основе классов, см. в статье Общие сведения о событиях и перенаправленных событиях.

Tapped и Holding являются взаимоисключающими. Если действие проходит пороговое значение времени для того, чтобы оно считалось действием Удержания , оно также не считается действием Касание .

Всякий раз, когда функция Holding срабатывает изначально, если элемент поддерживает события манипуляции с помощью значения ManipulationMode , отличного от значения ManipulationMode по умолчанию, срабатывает и ManipulationStarting . Если точка указателя остается в одном месте достаточно долго для обнаружения Holding, но после этого пользователь перемещает точки указателя, связанные с действием Удержание , не освобождая их (что приводит к другому событию Holding с HoldingState как Canceled), то могут также срабатывать другие события манипуляции, такие как ManipulationStarted и ManipulationDelta .

Удержание ввода с помощью мыши и пера

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

Примечание

Действия мыши можно рассматривать как действия удержания, если вы используете собственный GestureRecognizer и указываете HoldWithMouse в параметрах.

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

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