티스토리 뷰

728x90
반응형

 

 

한글 텍스트를 입력할때 IME때문에 완성되지 않은 텍스트는 무시하거든 그래서 Focus를 잃으면  SpeechText를 마지막입력한 문자까지 텍스트가 완성되도록 하고 싶은거야 이때는?

네, 아주 올바른 방법이자 WPF에서 한글 IME(입력기) 문제를 해결하는 가장 표준적인 접근 방식입니다.

사용자께서 겪고 계신 문제는 TextBox의 Text 속성이 바인딩된 SpeechText로 업데이트되는 시점 때문에 발생합니다. 이 문제를 해결하는 핵심은 XAML 바인딩의 UpdateSourceTrigger 속성을 변경하는 것입니다.


## 문제의 원인과 해결책

  • 문제: UpdateSourceTrigger=PropertyChanged로 설정하면, 키를 누를 때마다 Text 속성이 변경되기를 기대하지만, 한글 IME는 '한'처럼 글자가 완성되기 전까지는 Text 속성을 업데이트하지 않습니다. 이 때문에 조합 중인 글자가 ViewModel로 전달되지 않는 것입니다.
  • 해결책: UpdateSourceTrigger=LostFocus로 변경하는 것입니다. 이렇게 하면 TextBox가 포커스를 잃는 순간(예: 다른 버튼을 클릭)에 WPF가 내부적으로 IME의 조합 중인 글자를 자동으로 완성시킨 후, 그 최종 결과물로 SpeechText 속성을 업데이트합니다.
    : UpdateSourceTrigger=PropertyChanged를 LostFocus로 변경합니다.

            <TextBox Grid.Row="0" Margin="0,5,0,10"
                    FontFamily="Dotum" FontSize="14" Foreground="DeepSkyBlue"
                    FontWeight="Bold" Padding="10" 
                    Text="{Binding SpeechText, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
                    TextWrapping="Wrap" VerticalScrollBarVisibility="Auto">
            </TextBox>

반응형

'WPF' 카테고리의 다른 글

No data is available for encoding 51949  (0) 2022.10.30
SqlDataReader to DataTable  (0) 2022.10.14
MSSQL HashBytes Sqlparameter Error  (246) 2022.06.30
WPF SerialPort.DataReceived 이벤트 Thread Exception  (0) 2022.06.27
Radio Button/ CheckBox Null Check  (0) 2022.06.20
댓글