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