为了澄清我有绑定到其的ItemSource属性可观察集合的组合框。我希望用户只能输入集合中存在的项目。同时保持如何限制用户输入一个组合框,好让你只能输入是集合内的话吗?
IsTextSearchEnabled="true"
功能。 所以我一直在网上寻找关于如何做到这一点的例子。直到现在我想我应该使用
<ComboBox TextInput="cbb1_TextInput" />
事件,然后搜索集合。但我微弱的尝试不能保持自动完成功能,selectedindex变得混乱和其他不需要的行为。由于我在wpf中是个不错的选择,我想知道是否有只使用XAML部分的解决方案?
编辑: 我想是这样的:
private void fase1cbb1_KeyUp(object sender, KeyEventArgs e)
{
ComboBox cb = (ComboBox)sender;
bool match = false;
TextBox tb = (TextBox)cb.Template.FindName("PART_EditableTextBox", cb);
if (tb.Text.Length > 0)
{
foreach (MenuItem MI in cb.Items)
{
if (MI.Text.StartsWith(tb.Text))
{
match = true; ;
}
}
if (!match)
{
int len = tb.Text.Length;
if (len > 0)
{
tb.Text = tb.Text.Substring(0, len - 1);
tb.SelectionStart = len;
}
}
}
}
但只要没有比赛了没有更多选择的项目,并没有更多的自动完成/ TEXTSEARCH。
日Thnx的任何意见或例子。
SOLUTION: WPF ComboBox with IsEditable="True" - How can I indicate that no match was found?
我不会用KeyUp事件。是不是有一个BeforeValueChange或类似的东西? (不确定,我主要使用infragistics)如果是这样,你可以检查新文本是否匹配项目。如果不是,则取消文本更改事件。 – Tipx