Вопрос по mouseevent, wpf, events, c#, button – MouseLeftButtonUp не срабатывает

4

у меня естьButton


    
        
            
                
            
        
    

Но проблема в том, что, в отличие от MouseLeftButtonDown, событие MouseLeftButtonUp не запускается. Зачем? Как я могу решить это? Благодарю.

Ваш Ответ

3   ответа
4

Событие Click обрабатывает событие LeftMouseUp, как сказал Cyborgx37.

Вы можете использоватьPreviewMouseLeftButtonUp событие вместоMouseLeftButtonUpна кнопку, как вы можете видеть ниже:


    
        
            
                
            
        
    

Ваш шаблон кнопки имеет только изображение, я думаю, вы неЭта кнопка не нужна, вы можете использовать ее, как описано выше, чтобы захватить событие MouseLeftUp.


Этот способ намного проще, но зависит от того, что вам нужно.

Кстати, извините за мой дерьмовый английский, я надеюсь, что это может помочь вам.

7

Наверное, потому чтоButton обрабатывает событие, так что это неОтфильтровать до управления изображением.

Почему вы обрабатываете события MoustUp и MouseDown наImage? Почему бы не справиться с ними на?Button

РЕДАКТИРОВАТЬ

После быстрого просмотра документации для этого события, я вижу, что стратегия маршрутизации дляMouseLeftButtonUp являетсянепосредственный, но фактическое основное событие являетсяMouseUp событие, которое имееткипение стратегия. Итак, по сути,MouseLeftButtonUp должна иметь де-факто пузырчатую стратегию, что означаетImage должна иметь возможность обработать событие до.Button

Похоже, что-то еще может происходить. Если для элемента управления изображением установлено значение «Ничего», а фон имеет значение «ноль» (отличается отColor.Transparent), тогда WPF будет относиться к элементу управления как к «нет»существующий" насколько события мыши идут.

РЕДАКТИРОВАТЬ 2

Хм ... может быть, мое первоначальное предположение было правильным после всего. По этой теме:

http://social.msdn.microsoft.com/forums/en/wpf/thread/e231919d-9fef-4aa5-9dcb-2c1eb68df25b/#306db880-ed50-45d2-819f-88d76f7148c1

Button обрабатываетMouseUp событие. Попробуйте использоватьPreviewMouseUp а затем проверка, чтобы увидеть, какая кнопка была нажата.

РЕДАКТИРОВАТЬ 3

Хорошо ... Я думаю, я понял это. Я'Готов поспорить, что Баттон "отлов» мышь на событие MouseDown. Когда это происходит, другие элементы управления не будут получать события MouseUp или MouseDown (включая версии Preview), пока не будет выпущена мышь.

Увидеть:http://books.google.com/books?id=nYl7J7z3KssC&пг = PA146 # v = twopage & д &е = верно

Я считаю, чтоMouseLeftButtonUp событие вызывается только послеMouseUp, ПосколькуButton вероятно устанавливаетIsHandled собственность наtrue за ,MouseUpMouseLeftButtonUp вероятно, никогда не поднимается. Пробовать обработкуMouseUp наButton, (Вам может даже понадобитьсяPreviewMouseUp - не уверен насчет порядка обработки событий.) JDB
Спасибо, очень полезно. Nick
Я должен изменить источник изображения с помощью этих событий. Даже используя событие Button MouseLeftButtonUp, оно не работает. Nick
0

Попробуйте использовать событие PreviewMouseLeftButtonUp.

Похожие вопросы