1

包含分隔符控件的 WPF 可编辑组合框的自动完成显示 System.Windows.Controls.Separator。

使用此 xaml:

<ComboBox IsEditable="true">
   <ComboBoxItem Content="aaaaa"/>
   <ComboBoxItem Content="bbbbb"/>
   <ComboBoxItem Content="ccccc"/>
</ComboBox>

用户可以从 a 到 c 开始输入,以自动完成其余字符。a 将变为 aaaaa,b 将变为 bbbbb,依此类推。

但是,问题是如果我想添加分隔符并使其中一些免于自动完成。我试过这个:

<ComboBox IsEditable="true">
   <ComboBoxItem Content="aaaaa"/>
   <ComboBoxItem Content="bbbbb"/>
   <Separator IsEnabled="false"/>
   <ComboBoxItem Content="ccccc" IsEnabled="false"/>
</ComboBox>

当我点击 c 时,组合框仍然显示 ccccc 作为选项。此外,当我点击 S 时,奇怪的是组合框将 System.Windows.Controls.Separator 显示为选项(!)

我的期望是自动完成只支持键入 a 和 b,因为其他两个(分隔符和 ccccc)设置为 IsEnabled="false"。

有什么解决办法吗?请告诉我。

4

2 回答 2

1

使用 items 集合来引入一些看起来像标题的东西可能不是一个好主意,你会遇到各种各样的问题,包括这个问题。您最好TemplateComboBox或完全创建一个自定义控件来提供此功能的属性。

于 2011-10-27T22:21:12.240 回答
0

未来访问者的替代答案:我今天遇到了这个问题,不想像接受的答案所建议的那样完成创建自定义模板的所有工作。

对我来说,这个列表非常有限,所以我将TextSearch.Text附加属性设置Separator为一个不太可能输入的字符。这里我使用版权符号:

<ComboBox IsEditable="true">
 <ComboBoxItem Content="aaaaa"/>
 <ComboBoxItem Content="bbbbb"/>
 <Separator IsEnabled="false" TextSearch.Text="&#xA9;"/>
 <ComboBoxItem Content="ccccc" IsEnabled="false"/>
</ComboBox>
于 2015-05-08T19:38:40.243 回答