Partilhar via


UIElement.Holding Evento

Definição

Ocorre quando uma interação hold sem tratamento ocorre na área de teste de ocorrência desse elemento.

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

Tipo de evento

Comentários

O toque pode produzir uma ação Holding , mas os dispositivos do mouse geralmente não podem. Para obter mais informações, consulte Entrada de ponteiro de identificador.

Os eventos Tapped, DoubleTapped e RightTapped ocorrem somente depois que o ponto de toque é removido. Mas o evento Holding inicial ocorre enquanto o ponto de toque ainda está em contato. O evento ocorrerá se o ponto de toque permanecer aproximadamente na mesma posição do PointerPoint por um período de tempo. O tempo exato do que o sistema interpreta como uma ação de retenção é ajustável pelos usuários por meio das configurações do sistema.

A retenção destina-se à interface do usuário informativa, mas para interações como exibir um menu de contexto, você deve usar RightTapped . Você pode manipular Segurando primeiro para exibir uma dica de que um menu será exibido, mas para exibir o menu em si, use um manipulador RightTapped . Consulte Design de interação por toque ou diretrizes de UX para interações personalizadas do usuário para obter mais informações sobre como usar uma interação de espera no design do aplicativo.

A realização de eventos geralmente ocorre em pares. Quando a ação é interpretada pela primeira vez como uma ação Hold com base em nenhum movimento por um período de tempo, Holding dispara, com o valor HoldingState de Started nos dados de evento HoldingRoutedEventArgs . Quando a ação Detenção terminar, outro evento Holding será acionado, desta vez com HoldingState de Concluído ou Cancelado.

  • A ação Detenção termina com HoldingState como Concluído se o usuário não mover o ponteiro durante o estado De espera e, em seguida, libera os pontos de ponteiro que iniciaram a ação. Para esse caso, RightTapped é acionado logo após o segundo evento holding.

  • A ação Hold termina com HoldingState como Cancelado se o usuário mover os ponteiros que iniciaram a ação ou também para situações incomuns, como alterar o teste de ocorrência status no elemento durante a ação ou capturar outro ponteiro. Se a ação Detenção terminar com HoldingState como Cancelado, RightTapped não será acionado.

Um evento Holding representa um gesto, enquanto um evento PointerPressed é um evento de entrada de nível inferior. Os eventos Holding e PointerPressed podem ser acionados como resultado de uma única interação do usuário. Mesmo que um controle já esteja tratando eventos de ponteiro na lógica de controle ou esteja tratando manipulações, isso não impede que a Holding seja disparada.

Um evento Holding é potencialmente o resultado de mais de um ponto de ponteiro. Para os eventos de gesto de nível superior, como Segurando, você não tem mais acesso imediato aos detalhes do PointerPoint , como valores de PointerId individuais ou coordenadas individuais. Você tem acesso ao tipo de dispositivo (PointerDeviceType) e, para coordenadas, pode chamar GetPosition, o que fornece uma média das coordenadas para um Hold de mais de um ponto de ponteiro.

A retenção é um evento roteado. Além disso, um elemento deve ter IsHoldingEnabled como true para ser uma fonte de evento Holding (true é o padrão). É possível lidar com a exploração de elementos pai mesmo se IsHoldingEnabled for false no elemento pai, se o evento estiver em bolhas para um pai de um elemento filho de origem do evento em que IsHoldingEnabled é falso. Para obter mais informações sobre o conceito de evento roteado, consulte Visão geral de eventos e eventos roteado.

Para ações de toque e também para eventos específicos de interação ou de manipulação resultantes de uma ação de toque, é preciso que o elemento esteja visível para teste de clique, para ser a origem do evento e acionar o evento associado à ação. UIElement.Visibility deve ser Visível. Outras propriedades de tipos derivados também afetam a visibilidade do teste de ocorrência. Para saber mais, confira Visão geral de eventos e eventos roteados.

A retenção dá suporte à capacidade de anexar manipuladores de eventos à rota que será invocada mesmo se os dados do evento forem marcados como Manipulados. Consulte AddHandler.

Controles de Windows Runtime específicos podem ter manipulação baseada em classe para o evento Holding. Nesse caso, o controle provavelmente tem uma substituição para o método OnHolding. Para obter mais informações sobre como funciona o tratamento baseado em classe para eventos, consulte Visão geral de eventos e eventos roteado.

Tapped e Holding são mutuamente exclusivos. Se a ação passar o limite de tempo para ser considerada uma ação De espera , ela também não será considerada uma ação De toque.

Sempre que Holding é acionado inicialmente, desde que o elemento dê suporte a eventos de manipulação por meio de um valor ManipulationMode não padrão, ManipulationStarting também será acionado. Se o ponto de ponteiro permanecer em um lugar por tempo suficiente para que Holding seja detectado, mas, depois disso, o usuário moverá os pontos de ponteiro associados à ação Hold sem liberá-los (levando a outro evento Holding com HoldingState como Cancelado), outros eventos de manipulação como ManipulationStarted e ManipulationDelta também poderão ser acionados.

Segurando a entrada de mouse e caneta/caneta

A entrada do mouse não produz eventos holding por padrão, independentemente de quanto tempo um botão do mouse é mantido pressionado ou qual botão é mantido. No entanto, dispositivos de mouse e alguns dispositivos de caneta podem disparar RightTapped quando um botão direito do mouse ou equivalente é pressionado e liberado.

Observação

Há uma maneira de tratar as ações do mouse como ações de retenção se você usar seu próprio GestureRecognizer e especificar HoldWithMouse nas configurações.

Aplica-se a

Confira também