2015-12-28 2 views
0

У меня есть главное окно. Если я нажимаю на определенную кнопку, у меня есть окно popUp, которое появляется на нем с несколькими различными компонентами (вход, кнопка, dropdownlist и т. Д.). Все работает нормально, пока я не потеряю фокус, просто щелкнув снаружи. И если я хочу вернуться, я нажимаю на Popup, но он не может быть активным снова, и для этого, чтобы быть активным, я должен щелкнуть по главному окну или щелкнуть appIcon на панели задач.Как вернуть фокус на всплывающее окно, потеряв его в WPF?

У вас, ребята, была такая проблема?

И как его решить?

Спасибо!

+0

Моя проблема, как представляется, Двойники в [ЭТО] (http://stackoverflow.com/questions/10290504/wpf-popup-not-causing-application-to-be-focused-when-clicked-on) –

+0

Но я не получаю решение. Он решил решить проблему, используя somethig, как ** Предварительный просмотр ... события мыши ** –

ответ

1

Я думаю, что вы ищете PreviewMouseDown событие. Я тестировал его, и он восстанавливает потерянный фокус.

private void Popup_PreviewMouseDown(object sender, MouseButtonEventArgs e) 
{ 
    this.Focus(); 
} 
+0

да, это работает человек! –

+0

, но до сих пор не понял разницы btw 'MouseDown' и' PreviewMouseDowm' –

+0

Событие MouseDown было поднято элементом управления, на который вы нажали. Если вы нажмете на TextBlock, который находится внутри Popup, тогда 'MouseDown' будет поднят только этим TextBlock. Если вы нажмете прямо на панель управления Popup, тогда 'MouseDown' будет обновляться только Popup. Поэтому, если вы хотите обрабатывать оба случая, тогда вы должны реализовать обработчики 'TextBlock_MouseDown' и' Popup_MouseDown'. Событие PreviewMouseDown будет создано для элемента управления, на который вы нажали, и для всех основных элементов управления. Поэтому достаточно обработать 'PreviewMouseDown' только один раз для верхнего родительского элемента управления - Popup. –

Смежные вопросы