2013-06-18 26 views
0

我有一个自定义的wpf组合框,其中ItemsSource是一个长的字符串列表。不希望可编辑的组合框更改itemssource

特殊:通过ComboBox文本框中的文本动态过滤ItemsSource。 这意味着,ItemsSource通过抛出过滤的字符串来更改其ItemCount。 但它永远不应该改变字符串项目本身。但是,这是发生了什么:

为了有一个组合框,让文字输入,我需要设置

IsEditable='True' 

例子:这是我的ItemsSource:

Item1000 
Item2000 
Item3000 

当我键入“Item200” ,按回车键,显示要选择的项目:

Item2000 

当我没有通过鼠标或上/下选择项目箭头,并按下仅返回键入“Item200”,我下次有这个ItemsSource:

Item1000 
Item200 
Item3000 

我该如何防止这种行为?

我听说在wpf中,Winforms中的所谓“DropDownList”-Style,可以通过设置IsEditable = False来实现。 但是,然后,组合框文本框(它提供了过滤),将不可用,在我的情况下,这是没有选择。 ?

+1

发布过滤代码。 – lisp

回答

0

..答案是我覆盖了一些对象。我从你的好消息中发现了!

1

您所描述的预期行为是自动完成框而不是ComboBox。尝试使用实际设计用于执行所需操作的控件,而不是针对内置的控件进行操作。有很多自动完成的实现(Silverlight有内置但WPF没有),例如:http://wpfautocomplete.codeplex.com/