如果WPF ComboBox的IsEditable和IsReadOnly属性均为true,如何使键盘文本搜索正常工作?

7

大家好,我在使用WPF ComboBox时遇到了问题,请看代码:

<ComboBox x:Name="comboBox" Width="100" IsReadOnly="True" IsEditable="True" IsTextSearchEnabled="True">
<ComboBoxItem>dsf gd</ComboBoxItem>
<ComboBoxItem>asf gd</ComboBoxItem>
<ComboBoxItem>dsf gd</ComboBoxItem>
<ComboBoxItem>hsf gd</ComboBoxItem>
</ComboBox>

要求是ComboBox中的文本可选,按键首字母搜索文本应该可以使用,并且ComboBox应该是可编辑的。 我设置了属性。
IsReadOnly="True" 
IsEditable="True"

但是文本搜索无法正常工作。 请帮我解决这个问题。 提前感谢。


1
具体是什么不起作用,发生了什么?当我尝试您的代码时,它可以工作。我将IsEditable设置为true,它也可以工作(而且更容易看到,因为您可以看到文本)。 - ThomasAndersson
搜索框无法通过按键进行搜索,例如在ComboBox中按下键“a”应该选择第一个首字母为“a”的项目。但是如果将IsEditable设置为true,则无法实现此行为。 - Sergey K
2个回答

20
尝试使用 IsTextSearchEnabled="True" TextSearch.TextPath="<PropertyName>",其中<PropertyName>是您的ItemsSource中项目属性的名称。

当IsEditable = true时,文本搜索无法工作。这是主要问题。 - Sergey K

1

我认为你可以通过移除IsReadOnly属性来解决你的问题。你将它设置为true,所以ComboBox不接受任何输入。如果你不想要一个空项作为第一个ComboBox项,你可以设置SelectedIndex="0"。


谢谢您的回答,但要求是下拉框应该是只读的。 - Sergey K
2
@Serghei,你说ComboBox应该是可编辑的。它怎么可以同时是可编辑和只读的呢?如果你不需要编辑它的项目,那么你可以将IsEditable设置为false并删除IsReadOnly - icebat
ComboBox 应该仅在文本选择时可编辑,当焦点位于 ComboBox 时,其中的文本应同时被选中,同时 ComboBox 应为只读状态。 - Sergey K
从问题描述中,“comboBox 应该是可编辑的”。“仅对文本选择可编辑”不是 IsEditable 的含义。 - paparazzo
@BalamBalam 是的,我知道你是对的,但如何实现文本选择而不设置IsEditable为true呢? - Sergey K
@Serghei,我认为你不能仅通过IsEditable和IsReadOnly在ComboBox中创建可选择文本。你需要在这里使用ItemTemplate进行调整。 - icebat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接