| name | wpf-popup-focus |
| description | WPF Popup 컨트롤의 포커스 관리 패턴 (PreviewMouseDown 이벤트 활용) |
5.7 Popup 컨트롤 사용 시 주의사항
WPF에서 Popup 컨트롤은 WPF Application에 포커스가 있을 때만 정상적으로 동작합니다. 다른 애플리케이션으로 포커스가 이동한 상태에서는 Popup이 제대로 표시되지 않거나 동작하지 않을 수 있습니다.
5.7.1 포커스 관리 패턴
WPF에서 Popup 컨트롤을 사용할 경우, PreviewMouseDown 이벤트를 통해 포커스를 강제로 가져와야 합니다.
5.7.2 코드 예제
scripts/MainWindow.cs 파일 참조
5.7.2 핵심 원칙
- Popup 동작 조건: WPF Application에 포커스가 있을 때만 동작
- PreviewMouseDown 이벤트: 마우스 클릭 시 포커스 상태 체크
- IsKeyboardFocused 체크: 키보드 포커스 여부 확인
- Activate() 호출: 포커스가 없으면 윈도우 활성화하여 포커스 복원
- UserControl 경우:
Window.GetWindow(this)?.Activate()로 부모 윈도우 활성화
5.7.3 왜 필요한가?
- 다른 앱으로 포커스 이동: 사용자가 다른 애플리케이션을 클릭했다가 다시 돌아올 때
- 백그라운드 실행: WPF 앱이 백그라운드에 있을 때 Popup 동작 보장
- 사용자 경험: Popup이 항상 예상대로 동작하도록 보장
⚠️ 주의사항:
- Popup을 사용하는 모든 Window에 이 패턴을 적용해야 함