Как лучше всего имитировать щелчок с помощью событий MouseUp и MouseDown или иным образом?

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

Очевидная проблема заключается в том, что вы не можете просто пропустить событие MouseDown потому что, если ваш щелчок запускается на другом элементе управления и освобождается над элементом управления, который обрабатывает только MouseUp , ваш предполагаемый щелчок будет срабатывать, а на самом деле не должен: Оба MouseUp и MouseDown должно происходить над одним и тем же элементом управления.

Так что мне было бы интересно найти более элегантное решение этой общей проблемы, если оно есть.


Примечания:

Мой ответ на прикрепленное событие имеет то преимущество, что он довольно близок к обычному событию щелчка с точки зрения Xaml-разметки, которая может быть сделана с одним атрибутом, единственная проблема, которую я вижу с этим, заключается в том, что прикрепление события в код не инкапсулирован чисто (если кто-нибудь знает, как исправить это, добавьте комментарий к ответу).

29
задан Community 23 May 2017 в 12:33
поделиться