繁体   English   中英

WPF ComboBox不允许选择

[英]WPF ComboBox disallow selection

我有一个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键入的内容来过滤项目列表。 现在,我尝试了自定义控件,处理了ComboBoxKeyUp事件,依此类推,但是我经常遇到的一个问题是,当我在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的筛选器绑定到构造函数中的FilterPredicate

如果您需要更多信息,请与我们联系。

谢谢

禁用isTextSearchEnabled属性对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM