UIElement.PointerEntered Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando um ponteiro entra na área de teste de ocorrência desse elemento.
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"/>
Tipo de evento
Comentários
O PointerEntered evento é acionado em resposta a um ponteiro movendo-se para a área delimitadora do elemento. Interações de toque, mouse e caneta/caneta são recebidas, processadas e gerenciadas como entrada de ponteiro no aplicativo. Qualquer um desses dispositivos e suas interações podem produzir um PointerEntered evento. Para obter mais informações, consulte a entrada do ponteiro handle e também as outras observações neste tópico.
PointerEntered é um evento roteado. Para obter mais informações sobre o conceito de evento roteado, consulte Eventos e visão geral de eventos roteado.
Use um manipulador baseado em PointerEventHandler para lidar com esse evento.
Para que um elemento possa ser a origem de ações de toque, bem como de eventos específicos de interação ou manipulação que são consequências de uma ação de toque, ele deve ser visível ao teste de toque para ser o gatilho e disparar o evento associado à ação. UIElement.Visibility deve ser visível. Outras propriedades de tipos derivados também afetam a visibilidade do hit-test. Para saber mais, confira Visão geral de eventos e eventos roteados.
PointerEntered dá suporte à capacidade de anexar manipuladores de eventos à rota que será invocada mesmo se os dados do evento estiverem marcados como Manipulados. Consulte AddHandler.
Controles Windows Runtime específicos podem ter manipulação baseada em classe para o evento de entrada PointerEntered. Nesse caso, o controle provavelmente terá uma substituição para o método OnPointerEntered. Normalmente, o evento não é marcado como manipulado pelo manipulador de classe, portanto, o PointerEntered evento ainda pode ser tratado pelo código do usuário para o controle em sua interface do usuário. Para obter mais informações sobre como o tratamento baseado em classe para eventos funciona, consulte a visão geral de eventos e eventos roteado.
PointerEntered para entrada de caneta/caneta e mouse
Um dispositivo de entrada do mouse tem um cursor na tela que fica visível sempre que o mouse se move, mesmo que nenhum botão do mouse seja pressionado no momento. Um PointerEntered evento precederá o primeiro PointerMoved evento disparado pelo elemento. Comportamento semelhante está disponível para entrada de dispositivo de caneta, em que os dispositivos de entrada podem detectar que a caneta está pairando sobre a superfície do dispositivo de entrada (IsInRange), mas não tocando nela. Assim, a entrada do dispositivo de mouse e caneta disparará PointerEntered eventos em casos ligeiramente diferentes dos eventos de toque. Para obter mais informações, consulte as interações do Mouse.
PointerEntered para entrada por toque
Um ponto de toque só será detectável se um dedo estiver tocando a superfície. Sempre que uma ação de toque resulta em um evento PointerPressed , esse evento é imediatamente precedido por um PointerEntered evento, com todos os dados de evento sendo as mesmas informações para os dois eventos (mesma ID do ponteiro, mesma posição e assim por diante.) Em outras palavras, o ponteiro é considerado para inserir o elemento no momento e posicionar que o elemento é tocado por um ponto de toque.
Como alternativa, um ponto de toque será gerado PointerEntered se um ponteiro permanecer em contato constante com a superfície à medida que ele se move e inserir os limites de teste de ocorrência de um elemento. Para esses tipos de ações de toque, também é possível que a ação possa ser processada como uma manipulação ou como um gesto, em vez de um evento de ponteiro. Para obter mais informações, consulte a entrada do ponteiro Handle.
Comportamento de evento roteado para PointerEntered
PointerEntered é um evento roteado. Para obter mais informações sobre o conceito de evento roteado, consulte Eventos e visão geral de eventos roteado. Você pode definir vários PointerEntered eventos para elementos em uma interface do usuário XAML, inclusive para elementos que estão em uma relação pai-filho. Em uma composição típica da interface do usuário, os elementos filho estão em algum lugar dentro dos limites de um elemento pai, portanto, o PointerEntered evento ocorrerá primeiro para o pai quando o ponteiro se mover para o pai e, em seguida, para o filho quando o ponteiro se mover para lá. O PointerEntered evento normalmente não é bolha para o pai quando o elemento filho o dispara, pois conceitualmente o ponteiro já está dentro dos limites pai e seria confuso para o sistema de entrada rotear a ocorrência do PointerEntered evento para o pai também. Normalmente, você não deseja que PointerEntered os eventos roteiem de qualquer maneira, você só deseja processá-los do remetente. Você pode impedir explicitamente o roteamento de eventos definindo Handled em true seu manipulador.
Em casos raros, é possível ver uma PointerEntered bolha de evento para o pai. Por exemplo, se você usou um RenderTransform para deslocar um elemento filho fora dos limites de seu pai, o evento gera bolhas para o pai quando o elemento filho é inserido e fornece as informações do evento, conforme relatado pela forma como o elemento filho disparou o evento.
Captura de ponteiro
Se outro elemento tiver capturado o ponteiro, PointerEntered não será acionado mesmo que o ponteiro capturado insira os limites de um elemento. No entanto, se a captura de ponteiro for liberada enquanto o ponteiro estiver sobre o elemento, PointerEntered será acionada, até mesmo pensei que o ponteiro poderia ter permanecido parado nesse caso. O valor de GetCurrentPoint dos dados de evento pode ser um ponto em algum lugar no meio de um elemento em vez de um ponto ao longo de suas bordas porque o ponteiro já estava sobre o elemento quando a captura foi liberada. Para obter mais informações sobre a captura de ponteiro, consulte as interaçõesdo CapturePointer ou do Mouse.
Estados visuais PointerOver para controles
Controles que têm modelos de controle podem aplicar estados visuais que estão ativos somente quando um ponteiro está sobre os limites do controle. Nem sempre você precisa manipular PointerEntered ou PointerExited para obter ou alterar esse comportamento. Talvez seja necessário reformular o controle. Se você estiver derivando de um controle existente que já tem o tratamento de entrada de baixo nível que invoca estados visuais, você deverá fornecer um estado visual chamado "PointerOver" no VisualStateGroup "CommonStates" e a lógica de controle interna carregará esse estado visual sempre que um ponteiro estiver sobre o controle. Um estado visual para ponteiro geralmente está presente em controles que podem ser invocados ou selecionados, como um Botão ou ListViewItem. Se você estiver derivando de uma classe base como Control que não tem tratamento interno de eventos de entrada que invoca estados visuais, talvez seja necessário substituir OnPointerEntered e OnPointerExited por conta própria para obter esse comportamento.