0

我有一个自定义 wpf ComboBox,其中 ItemsSource 是一个长字符串列表。

特殊:ItemsSource 由 ComboBox TextBox 中的文本动态过滤。这意味着,ItemsSource 通过丢弃过滤后的字符串来更改其 ItemCount。但它永远不应该改变字符串项目本身。但这就是发生的事情:

要拥有一个允许文本输入的 ComboBox,我需要设置

IsEditable='True'

示例:这是我的 ItemsSource:

Item1000
Item2000
Item3000

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

Item2000

当我不通过鼠标或向上/向下箭头选择项目时,仅在输入“Item200”后按返回,下次我有这个 ItemsSource:

Item1000
Item200
Item3000

我怎样才能防止这种行为?

我听说在 wpf 中,在 Winforms 中称为“DropDownList”-Style,您可以通过设置 IsEditable=False 来实现。但是,ComboBox TextBox(提供过滤)将不可用,这在我的情况下是没有选择的。?

4

2 回答 2

1

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

于 2013-06-18T12:21:28.850 回答
0

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

于 2013-06-21T07:26:55.743 回答