WinUI 3에서 포커스를 받을 수 있는 컨트롤을 만들 때 이상한 동작 상황을 해결하지 못해 질문을 올립니다.
테스트 프로젝트를 다운로드 해서 재현할 수 있습니다. WinUI 3 1.0이 설치되어 있어야 합니다.
사용자 컨트롤을 IsTabStop
을 true
로 줘 포커스 받을 수 있도록 하고, 강제로
Focus(FocusState.Programmatic);
를 해서 포커스 상태로 만들 후, OnPreviewKeyDown()
에서 키 입력을 잘 받는 것을 확인했습니다.
그런데, 이 상태에서 마우스 왼쪽 버튼을 클릭하면 포커스를 잃어 버립니다.
신기하게도 마우스 중간 버튼과 오른쪽 버튼을 눌렀을 때는 해당 증상이 발생하지 않습니다.
이것을 해결하기 위해
protected override void OnTapped(TappedRoutedEventArgs e)
{
// Force focus, it's working
Focus(FocusState.Programmatic);
}
클릭 했을 때 다시 강제로 포커스를 가지는 것으로 해결했습니다. 그런데,
마우스 왼쪽 버튼을 클릭하고-이동후-놨을 때는 적용이 안되어서,
protected override void OnPointerReleased(PointerRoutedEventArgs e)
{
// Force focus but not working
Focus(FocusState.Programmatic);
}
이 부분도 적용을 헀는데 Focus()
가 호출됨에도 불구하고 이후 포커스를 잃어 키 입력을 감지하지 못합니다.
혹시 관련 경험이 있으시거나 힌트를 가지고 계신 분 도움을 부탁 드립니다.