Compartilhar via


UIElement.PointerEntered Evento

Definição

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 evento PointerEntered é acionado em resposta a um ponteiro que se move para a área delimitadora do elemento. As interações de toque, mouse e caneta/caneta são recebidas, processadas e gerenciadas como entrada de ponteiro no aplicativo UWP. Qualquer um desses dispositivos e suas interações podem produzir um evento PointerEntered. Para obter mais informações, consulte Manipular entrada de ponteiro 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 Visão geral de eventos e eventos roteado.

Use um manipulador baseado em PointerEventHandler para manipular esse evento.

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.

PointerEntered dá suporte à capacidade de anexar manipuladores de eventos à rota que será invocada mesmo que os dados do evento sejam marcados como Manipulados. Consulte AddHandler.

Controles de Windows Runtime específicos podem ter manipulação baseada em classe para o evento de entrada PointerEntered. Nesse caso, o controle provavelmente tem uma substituição para o método OnPointerEntered. Normalmente, o evento não é marcado como manipulado pelo manipulador de classe, portanto, o evento PointerEntered ainda pode ser manipulado pelo código do usuário para o controle na interface do usuário. Para obter mais informações sobre como funciona o tratamento baseado em classe para eventos, consulte Visão geral de eventos e eventos roteado.

PointerEntered para entrada de mouse e caneta/caneta

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 evento PointerEntered precede o primeiro evento PointerMoved 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á eventos PointerEntered em casos ligeiramente diferentes dos eventos de toque. Para obter mais informações, consulte Interações por 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 evento PointerEntered, com todos os dados de evento sendo as mesmas informações para os dois eventos (a mesma ID do ponteiro, a mesma posição e assim por diante.) Em outras palavras, o ponteiro é considerado para inserir o elemento no momento e a posição em que o elemento é tocado por um ponto de toque.

Como alternativa, um ponto de toque gerará PointerEntered se um ponteiro permanecer em contato constante com a superfície à medida que ele se move e entrar nos 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 Entrada de ponteiro de identificador.

Comportamento de evento roteado para PointerEntered

PointerEntered é um evento roteado. Para obter mais informações sobre o conceito de evento roteado, consulte Visão geral de eventos e eventos roteado. Você pode definir vários eventos PointerEntered 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 evento PointerEntered 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 evento PointerEntered 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 de evento PointerEntered para o pai também. Normalmente, você não deseja que os eventos PointerEntered roteiem de qualquer maneira, você só deseja processá-los do remetente. Você pode impedir explicitamente o roteamento de eventos definindo Handled como true em seu manipulador.

Em casos raros, é possível ver uma bolha de evento PointerEntered para o pai. Por exemplo, se você tiver usado um RenderTransform para compensar um elemento filho fora dos limites de seu pai, o evento será bolhas para o pai quando o elemento filho for inserido e fornecerá 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á acionado, até mesmo pensou 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 lançada. Para obter mais informações sobre a captura de ponteiro, consulte Interações com CapturePointer ou Mouse.

Estados visuais pointerOver para controles

Os 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 lidar com 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, 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 de evento de entrada interno que invoca estados visuais, talvez seja necessário substituir OnPointerEntered e OnPointerExited por conta própria para obter esse comportamento. Para obter mais informações, consulte Animações de storyboard para estados visuais.

Comportamento do Windows 8

Para o Windows 8, geralmente o evento PointerEntered não será acionado se o cursor na tela (ou caneta ou ponto de toque) não se moveu de fato. Por exemplo, PointerEntered não será acionado se o mouse e seu cursor na tela permanecerem estacionários e um objeto com um manipulador PointerEntered tiver sua posição traduzida ou ajustada para se mover sob o cursor na tela. Ou, PointerEntered não será acionado se um elemento como um pop-up ou submenu desaparecer e o ponteiro agora estiver sobre um novo elemento (mas o ponteiro ainda não foi movido). Relacionado a isso está o comportamento PointerExited . Por exemplo, se um pop-up for descartado programaticamente, ele não disparará PointerExited se o ponteiro não se mover como a causa de descartá-lo. Você ainda obteria um evento PointerEntered se o ponteiro se movesse sobre o elemento recém-revelado, mas isso depende do usuário se isso vai acontecer, e isso acontece no momento da movimentação, não no momento da demissão. Em suma, tentar usar o último elemento que disparou PointerEntered para determinar o estado do ponteiro na interface do usuário do aplicativo não é abrangente no Windows 8 e há muitos cenários em que PointerEntered e PointerExited não serão emparelhados. Isso afeta os estados visuais para controles que usam PointerEntered e PointerExited como gatilhos também.

Começando com Windows 8.1, PointerExited é acionado para qualquer caso em que o ponteiro tenha disparado ao mesmo tempo um evento PointerEntered, mas alguma alteração de estado da interface do usuário acontece quando o ponteiro não está mais dentro desse elemento. Isso inclui casos em que todo o elemento desaparece. E se o ponteiro agora estiver sobre um elemento diferente porque um elemento anterior desapareceu, esse elemento disparará PointerEntered, mesmo que o ponteiro nunca se mova. Os elementos que definem sua Visibilidade como Recolhido programaticamente são uma maneira de os elementos desaparecerem da interface do usuário, e o comportamento Windows 8.1 é responsável por isso e disparará PointerExited para o elemento Collapsed e PointerEntered para o elemento recém-revelado.

Se você migrar o código do aplicativo do Windows 8 para Windows 8.1 talvez queira considerar essa alteração de comportamento, pois isso resulta em PointerExited e PointerEntered sendo acionados em casos em que eles não teriam sido disparados antes.

Os aplicativos que foram compilados para Windows 8, mas estão sendo executados no Windows 8.1, continuam a adotar o comportamento do Windows 8.

Aplica-se a

Confira também