项目

时间:2016-06-02 20:30:15

标签: wpf combobox autocomplete

我有一个ComboBox,我可以在每小时和每分钟星座加载。 这提供了许多项目,并仍然保持这个用户友好我想要自动完成。但问题是当我转向IsEditable="true"时,用户也可以输入任何值。

<ComboBox x:Name="cmbStartZeit" IsTextSearchEnabled="True" />

我在两个for循环中添加项目

for(int i = 00; i <= 24; i++)
{
    for(int j = 00; j <= 59; j++)
    {
       cmbStartZeit.Items.Add(i.ToString("00") + ":" + j.ToString("00"));
    }
}

如何在不允许用户添加自定义值的情况下启用自动完成功能?

1 个答案:

答案 0 :(得分:1)

您可以检查组合框项目是否包含TextChanged事件中输入的文本。 所以xaml代码看起来像这样。

<ComboBox Name="cbTest" IsTextSearchEnabled="True" IsEditable="True"
          TextBoxBase.TextChanged="cbTest_TextChanged" />

代码behinde应该是这样的。此代码可防止用户输入,而不是组合框项目。

string _prevText = string.Empty;

private void cbTest_TextChanged( object sender, TextChangedEventArgs e )
{
    foreach ( var item in cbTest.Items )
    {
        if ( item.ToString().StartsWith( cbTest.Text ) )
        {
            _prevText = cbTest.Text;
            return;
        }
    }
    cbTest.Text = _prevText;
}