我有一个ComboBox
声明如下:
<ComboBox
Name="cmb" Height="20" Width="125" Margin="5,3,0,0"
Text="{Binding SomeList}"
UpdateSourceTrigger=PropertyChanged}"
Validation.ErrorTemplate="{StaticResource errorTemplate}"
IsEditable ="True"
IsSynchronizedWithCurrentItem="True"/>
我正在尝试根据ComboBox
中输入的内容过滤项目列表。现在,我尝试了自定义控件,处理KeyUp
的{{1}}事件等等,但我经常遇到的一个问题是我在ComboBox
中输入一个字母的那一刻第一个匹配项填充在ComboBox
中,然后过滤器仅返回匹配项,使列表只有一个项。以下是TextBox
事件处理程序和KeyUp
:
FilterPredicate
private bool FilterPredicate(object value)
{
if (value == null)
return false;
if (cmb.Text.Length == 0)
return true;
string prefix = cmb.Text;
return value.ToString().ToLower().Contains(prefix.ToLower());
}
private void cmb_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
ComboBox cbSender = sender as ComboBox;
cbSender.Items.Filter = null;
if (e.Key == System.Windows.Input.Key.Escape || e.Key == System.Windows.Input.Key.Tab ||
e.Key == System.Windows.Input.Key.Enter)
{
cbSender.IsDropDownOpen = false;
}
else if (e.Key == System.Windows.Input.Key.Down)
{
cbSender.IsDropDownOpen = true;
}
else
{
if (cbSender.HasItems)
{
cbSender.IsDropDownOpen = true;
}
}
}
的过滤器绑定到构造函数中的ComboBox
。
如果您需要更多信息,请与我们联系。
谢谢
答案 0 :(得分:0)
禁用isTextSearchEnabled属性对我来说很有用。