Ações de botão do mouse também são tratadas por um gerente de entrada dedicado. Outros recursos de programação que contam com ações de botão do mouse, como, por exemplo, entrada e comando ligações, pode chamar manipuladores para a ação antes que ele é exposto como uma ação de botão do mouse geral. Se esses marca de recursos de sistema de entrada do Mouse.MouseUp o evento como manipulado, OnMouseUp não é invocado.
Se você usar esse manipulador de classe para marcar o evento como manipulado, afetar potencialmente os seguintes eventos: MouseLeftButtonUp e MouseRightButtonUp. Desses eventos podem ser gerados no elemento de recepção quando Mouse.MouseUp é recebido.
Se você marcar este evento como manipulado no tratamento de classe, subevents ainda são gerados; No entanto, eles passam o estado manipulado nos dados de evento. Se o evento é tratado na manipulação de classe, manipuladores de instância para os subevents não são invocados a menos que explicitamente AddHandler(RoutedEvent, Delegate, Boolean) com handledEventsTootrue para anexar manipuladores. Manipuladores de classe também não são chamados, a menos que esses manipuladores de classe foram registrados com o RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) assinatura com handledEventsTootrue. Pelo tratamento OnMouseUp, você está implicando que sua manipulação de classe contabilizados para todos os botões do mouse possíveis ações. Esse comportamento pode ser indesejado; Portanto, tenha cuidado ao usar esse método virtual para marcar eventos como manipulado.
Cada um dos eventos específicos do botão diretos também tem uma virtual no * método; Considere a possibilidade de se substituir esses manipuladores de classe de botão específicas pode ser mais apropriado.
Este método não tem nenhuma implementação padrão. Porque uma classe intermediária na herança pode implementar este método, é recomendável que você chama a implementação base em sua implementação.
A finalidade desse método é semelhante do common language runtime (CLR) padrão de evento em * métodos: este método fornece os meios para manipular o evento correspondente a partir de classes derivadas, estabelecendo um manipulador de classe em vez de um manipulador de instância. Nesse caso, o evento correspondente é um evento roteado. O padrão de implementação dos métodos diante * é diferente para os eventos roteados porque um evento roteado pode ser disparado por um elemento filho, que não é necessariamente o elemento que invocará manipuladores. Portanto, sua implementação precisa examinar as propriedades de fonte de dados do evento. Ele não deve tentar reraise o evento na maioria dos casos.
Substituindo este método ou por registrar manipuladores de classe RegisterClassHandler, derivada de classes de ContentElement pode chamar métodos do manipulador classe particular quando o evento é recebido na rota de evento. Um cenário onde a manipulação de classe é apropriada é manipular os dados do evento e marcar o evento roteado como manipulado.