2010-10-06 3 views
2

У меня есть проект wpf, который использует прозрачные окна, и я разделяю этот прозрачный стиль окна для моих диалоговых окон и моего mainwindow.wpf - прозрачный MainWindow и проблемы с DragMove «Может только вызвать DragMove, когда основная кнопка мыши недоступна».

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

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

Простым решением для меня в настоящее время является замена моего ярлыка на кнопку и подключение события click вместо этого.

Тем не менее, меня больше интересует вопрос о том, что вызывает эту проблему и почему происходит событие click, но мышь терпит неудачу.

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

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

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

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

ответ

3

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

1

«правильный» способ сделать без полого окна перемещаемого ->https://stackoverflow.com/a/3275712/146032

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

+0

Это хорошая ссылка, но она не имеет ничего общего с моей проблемой здесь. У меня было непредвиденное событие пузыря, которое бросало все это из-под удара. Мой диалог, который появился, даже не реализовал dragmove, поэтому не было возможности перетащить его. – TWood