2013-02-20 75 views
0

我有一個被定義如下:a ComboBoxWPF組合框不允許選擇

<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

讓我知道你是否需要更多信息。

謝謝

回答

0

禁用isTextSearchEnabled屬性對我來說沒有什麼竅門。

相關問題