c# - Wpf editable ComboBox: How do I enter new text to combobox which is not in list by pressing Enter -
the problem: cannot enter custom text combobox , press enter close dropdown list, because written custom-text overwritten selected item dropdown list.
i use editable=true , istextsearchenabled=true combobox list of strings:
<combobox iseditable="true" istextsearchenabled="true" itemssource="{binding names}" selecteditem="{binding selectedname}" text="{binding name}" > <combobox.style> <style> <eventsetter event="textboxbase.textchanged" handler="cmbtextfield_textchanged" /> </style> </combobox.style> </combobox>
textchanged: opens combobox dropdown list if text changed
private void cmbtextfield_textchanged(object sender, textchangedeventargs e) { var cmbx = sender combobox; //open dropdwon cmbx.isdropdownopen = true; }
how-to problem:
- enter first letter e.g.: "a". -> opens dropdown list , selects first name starts a.
- type additional letters end of found name (to new string not in list)
- press enter -> dropdown window closed , custom text overwritten selected text list.
(but working correctly if press tab instead of enter) know how solve issue?
- update: problem seems related istextsearchenabled=true property.
you can trying subscribing onpreviewkeydown method, fire before key press processed. when method called can check if key pressed return , mark handled.
something along lines should it:
private void cmbtextfield_previewkeydown(object sender, previewkeydowneventargs e) { if (e.keydata == keys.return) { e.handled = true; } }
bear in mind code wasn't tested.
Comments
Post a Comment