wpf - прозрачное MainWindow и проблемы с DragMove "Может вызывать DragMove только тогда, когда основная кнопка мыши нажата".

У меня есть проект wpf, который использует прозрачные окна, и я делюсь этим стилем прозрачного окна для моих диалоговых окон и моего mainwindow,

Я получаю сообщение об ошибке DragMove() событие моего MainWindow ПОСЛЕ того, как я закрываю диалоговое окно, которое использует тот же стиль окна. Чтобы сделать это еще более странным, это исключение возникает только тогда, когда я обрабатываю mouseleftbutton событие на этикетке в моем Status Bar на MainWindow, Если я поменяю ярлык на кнопку и заменим mouseleftbuttondown с click событие я не получаю ошибку.

Странно то, что всплывающее диалоговое окно не реализует dragmoveи я не тащусь mainwindow или. как-то dragmove вызывается после того, как выполнение моего кода возвращается к mainwindow после showdialog() вызов.

Сейчас мне легко исправить это, поменяв метку на кнопку и подключив событие click.

Тем не менее, мне больше интересно услышать о том, что вызывает эту проблему и почему срабатывает событие щелчка мышью, а мышиное - неудачно.

Мой "StatusBar" просто stackpanel с метками и другими стековыми панелями (которые содержат больше меток).

Кто-нибудь еще боролся с этим вопросом раньше? Должен ли я реализовать какой-то mouseclick Переопределение обработчика событий, чтобы я мог перехватить и отменить это исключение?

Повторный код может быть предоставлен при необходимости. Я получил достаточно хитов на dragmove вот так я надеюсь, что это легко для кого-то там.

Заранее благодарю за любую помощь!

3 ответа

Решение

Мой мозг сегодня не работает должным образом. Я забыл о маршрутизации событий в этом сценарии. Мне просто нужно было установить свойство Handled на моем routedevent, которое срабатывало при нажатии кнопки мыши. Каким-то образом я пропустил это в отладчике перед публикацией темы.

"Правильный" способ сделать окно без полей подвижным -> /questions/19241432/sposob-sdelat-okno-bez-okon-wpf-peretaskivaemyim-bez-polucheniya-invalidoperationexception/19241443#19241443

Обязательно вызывайте DragMove только при срабатывании события MouseLeftButtonDown и не забывайте обрабатывать событие, используя e.Handled=true;

Если вы получите это исключение, когда окно сообщения покажется завершенным. место Драгемове (); внутри попробуйте и пусто в улове.

Другие вопросы по тегам