편집 가능한 콤보 상자에서 TextChanged 이벤트를 가져오는 방법
편집 가능한 ComboBox가 있습니다.
<ComboBox IsEditable="true"/>
편집된 값이 변경될 때 발생하는 이벤트는 무엇입니까?텍스트 입력을 시도해 보았지만 그것은 해결책이 아닙니다.
<ComboBox IsEditable="True" TextBoxBase.TextChanged="ComboBox_TextChanged" />
...해야 합니다. (사용자가 텍스트 입력을 마쳤을 때가 아니라 텍스트를 변경할 때마다 실행되는 무언가를 원한다고 가정합니다.LostFocus 이벤트 같은 다른 이벤트가 필요한 경우는 어떤 경우입니까?
어쨌든 위의 XAML이 작동하는 이유는 IsEditable을 true로 설정하면 ComboBox가 텍스트를 표시하고 편집하기 위해 TextBox를 사용하기 때문입니다.TextBox의 TextChanged 이벤트는 버블링 이벤트입니다. 즉, 요소 트리를 통해 버블링되므로 ComboBox 자체에서 처리할 수 있습니다.
유일한 '꼼꼼한' 비트는 ComboBox가 TextChanged 이벤트 자체를 노출하지 않지만 연결된 이벤트(즉, TextBoxBase)를 사용하여 해당 이벤트에 대한 핸들러를 정의할 수 있다는 것입니다.TextChanged 구문).
(콤보박스에 텍스트박스가 두 개 이상 포함되어 있으면 텍스트가 변경될 때마다 핸들러가 호출된다는 점은 완전성을 위해 참고할 가치가 있을 것입니다.
위의 접근 방식을 바탕으로 (XAML) 생성 코드를 살펴보았습니다.
<ComboBox x:Name="myComboBox" IsEditable="True"/>
초기화에 다음 코드를 추가합니다.
myComboBox.AddHandler(System.Windows.Controls.Primitives.TextBoxBase.TextChangedEvent,
new System.Windows.Controls.TextChangedEventHandler(ComboBox_TextChanged));
모든 동작을 캡슐화하는 재사용 가능한 ComboBox(SQL-Server 드롭다운 목록)가 필요했기 때문에 이 기능은 잘 작동합니다.
미리보기콤보 상자의 모든 키보드 입력에 대해 TextInput 이벤트가 트리거됩니다.
추가 --->>TextBoxBase.TextChanged="ComboBox_TextChanged"
Ian R과 Girish Reddyvari의 답변에 감사드립니다.
저는 Caliburn Micro를 사용하고 있으며 그들이 입력하는 동안 Editable ComboBox의 입력을 얻으려고 합니다.Caliburn Micro는 이벤트를 쉽게 파악하지 못했습니다.
TextBoxBase.TextChanged
xaml과 상호작용에 대한 내 배경지식이 충분하지 않기 때문입니다!하지만 그것은 회복되었습니다.
KeyUp
Calibrurn Micro를 사용하는 내 코드는 다르지만 다음 코드도 작동해야 합니다.
<ComboBox IsEditable="True" KeyUp="ComboBox_TextChanged" />
언급URL : https://stackoverflow.com/questions/6914942/how-do-i-get-textchanged-events-from-an-editable-combobox
'programing' 카테고리의 다른 글
Postgresql 9.2pg_dump 버전 불일치 (0) | 2023.05.03 |
---|---|
python pip - local dir에서 설치 (0) | 2023.05.03 |
최상위 수준 요청에 대해 대기(거짓) 구성 (0) | 2023.05.03 |
Jupyter Python 노트북의 모든 데이터 프레임 열 표시 (0) | 2023.05.03 |
프로그래밍 방식으로 UICollectionView셀 너비 및 높이를 설정하는 방법 (0) | 2023.05.03 |