최대 1 분 소요

😢상황

  • 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의 시각적 구조를 변경하지 않고, 클릭 이벤트를 안정적으로 처리할 수 있는 우회 방법입니다.