Mouse.MouseDown Evento anexado
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 qualquer botão do mouse é pressionado.
see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler
see AddMouseDownHandler, and RemoveMouseDownHandler
Comentários
Para determinar qual botão do mouse estava deprimido, marcar a ChangedButton propriedade no MouseButtonEventArgs passado para o manipulador.
Esse é um evento anexado. O WPF implementa eventos anexados como eventos roteados. Os eventos anexados são fundamentalmente um conceito de linguagem XAML para referenciar eventos que podem ser tratados em objetos que não definem esse evento, que o WPF expande, permitindo também que o evento percorra uma rota. Os eventos anexados não têm uma sintaxe de tratamento direto no código; para anexar manipuladores para um evento roteado no código, use um método Add*Handler designado. Para obter detalhes, consulte Visão geral de eventos anexados.
A estrutura do Windows Presentation Foundation (WPF) se baseia nesse evento anexado, apresentando-o como dois eventos CLR (Common Language Runtime) diferentes em UIElement e ContentElement: MouseLeftButtonDown e MouseRightButtonDown. Essas implementações manipulam o evento subjacente MouseDown e leem os argumentos do evento para determinar se o botão esquerdo ou direito do mouse estava envolvido. Para um mouse de três botões, não há suporte a eventos de nível de estrutura para o botão central. Você deve usar o MouseDown evento e marcar o MiddleButton estado nos argumentos de evento.
Importante
Algumas ContentElement classes derivadas que têm um comportamento semelhante a controle, por exemplo, Hyperlink, podem ter tratamento de classe inerente para eventos de botão do mouse. O evento de botão esquerdo para baixo do mouse é o evento mais provável para ter manipulação de classe em um controle. O tratamento de classe geralmente marca o evento de Mouse classe subjacente como manipulado. Depois que o evento é marcado como manipulado, outros manipuladores de instância anexados a esse elemento normalmente não são gerados. Qualquer outro manipulador de classe ou instância anexado a elementos na direção borbulhante em direção à raiz na árvore de interface do usuário também normalmente não são gerados.
Você pode resolve o problema descrito na anotação Importante anterior e ainda receber MouseDown eventos para eventos do botão esquerdo do mouse em uma classe derivada que tenha tratamento de classe usando qualquer uma dessas soluções:
Anexe manipuladores para o PreviewMouseDown evento, que não é marcado como manipulado pelos controles. Observe que, como se trata de um evento de visualização, a rota começa na raiz e faz o túnel até o controle.
Registre um manipulador no controle processualmente chamando AddHandler e escolhendo a opção de assinatura que permite aos manipuladores escutar eventos mesmo que eles já estejam marcados como manipulados nos dados de evento roteado.
Para eventos roteado relacionados ao mouse, tenha cuidado com como ou quando você os marca tratados. A dificuldade em fazer as escolhas apropriadas sobre se os elementos pai também devem ser informados sobre uma determinada ação do mouse é, na verdade, por que a estrutura do WPF escolheu o modelo de fazer com que o evento roteado do mouse subjacente fosse exibido como eventos CLR ao longo da rota. Existem problemas semelhantes com eventos de túnel do mouse. Você deve lidar com o evento e não tê-lo tratado por mais crianças em direção à origem e como isso afetaria a composição de um controle em que as peças de composição poderiam ter comportamentos esperados do mouse?
Informações de evento encaminhado
Campo Identificador | MouseDownEvent |
Estratégia de roteamento | Borbulhando |
Delegar | MouseButtonEventHandler |
- O evento de túnel correspondente é PreviewMouseDown.