В WPF большинство элементов управления имеют события MouseUp
и MouseDown
(и варианты, специфичные для кнопки мыши), но не простое событие Click
, которое можно использовать сразу. Если вы хотите, чтобы при использовании этих событий было поведение, похожее на щелчок, вам нужно обрабатывать оба, которые я считаю немного неприятными.
Очевидная проблема заключается в том, что вы не можете просто пропустить событие MouseDown
потому что, если ваш щелчок запускается на другом элементе управления и освобождается над элементом управления, который обрабатывает только MouseUp
, ваш предполагаемый щелчок будет срабатывать, а на самом деле не должен: Оба MouseUp
и MouseDown
должно происходить над одним и тем же элементом управления.
Так что мне было бы интересно найти более элегантное решение этой общей проблемы, если оно есть.
Примечания:
Мой ответ на прикрепленное событие имеет то преимущество, что он довольно близок к обычному событию щелчка с точки зрения Xaml-разметки, которая может быть сделана с одним атрибутом, единственная проблема, которую я вижу с этим, заключается в том, что прикрепление события в код не инкапсулирован чисто (если кто-нибудь знает, как исправить это, добавьте комментарий к ответу).