WPF RichTextBox에서 마우스 클릭이 안 되는 문제
😢상황
- WPF의
RichTextBox
컨트롤을 사용 중 - 특정 위치(특히 텍스트 위)를 마우스로 클릭했을 때 이벤트가 발생하지 않는 문제가 발생
- 예를 들어, 아래와 같은 상황에서 문제 발생:
- 커스텀 클릭 동작을 구현했는데 텍스트 클릭 시 아무 반응 없음
- 문자가 없는 빈 공간은 잘 클릭됨
🛠️해결법
RichTextBox
위에 투명한 캔버스(Canvas) 를 덧대어 항상 클릭 이벤트를 받을 수 있도록 설정:
<Grid>
<RichTextBox x:Name="MyRichTextBox" IsReadOnly="True" />
<Canvas Background="Transparent"
MouseLeftButtonDown="Canvas_MouseLeftButtonDown" />
</Grid>
💡 이벤트 처리 로직은
Canvas_MouseLeftButtonDown
에서 구현
✅정리: 왜 이게 효과 있었는가?
RichTextBox
내부에서 텍스트 요소가UIElement
로 렌더링되면서 이벤트 버블링이 방해됨- 특히
IsReadOnly=True
상태일 경우 포커스와 입력 처리가 제한되면서 클릭이 무시됨 - 투명한 캔버스를 오버레이하여 마우스 입력을 항상 감지 가능한 레이어로 분리함으로써 문제 해결
👉 이 방식은 RichTextBox의 시각적 구조를 변경하지 않고, 클릭 이벤트를 안정적으로 처리할 수 있는 우회 방법입니다.