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"/>

Тип события

Комментарии

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

События Touchpped, DoubleTapped и RightTapped происходят только после удаления точки касания. Но начальное событие холдинга происходит, пока точка касания по-прежнему контактна. Событие возникает, если точка касания остается примерно в той же позиции PointerPoint в течение определенного периода времени. Точное время того, что система интерпретирует как действие удержания, настраивается пользователями с помощью параметров системы.

Хранение предназначено для информационного пользовательского интерфейса, но для взаимодействия, например отображения контекстного меню, вместо этого следует использовать RightTapped . Вы можете сначала обработать удержание, чтобы отобразить подсказку о том, что появится меню, но для отображения самого меню используйте обработчик RightTapped . Дополнительные сведения о том, как использовать взаимодействие с удержанием в дизайне приложения, см. в руководстве по проектированию взаимодействия с сенсорным интерфейсом или пользовательском интерфейсе.

Хранение событий обычно происходит в парах. Когда действие впервые интерпретируется как действие удержания на основе отсутствия перемещения в течение определенного периода времени, удерживая огонь, с значением HoldingStatestarted в данных события HoldingRoutedEventArgs . Когда действие удержания заканчивается, на этот раз с помощью HoldingStateзавершено или отменено другое событие холдинга.

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

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

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

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

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

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

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

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

Касания и Холдинг являются взаимоисключающими. Если действие передает порог времени для рассмотрения действия удержания , оно также не считается действием tap .

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

Хранение входных данных мыши и пера или пера

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

Note

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

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

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