包含分隔符控件的 WPF 可编辑组合框的自动完成显示 System.Windows.Controls.Separator
包含分隔符控件的 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,因为其他两个(Separator 和 ccccc)设置为 IsEnabled="错误的”。
有什么解决办法吗? 请告诉我。
AutoComplete for a WPF editable ComboBox including Separator control shows System.Windows.Controls.Separator.
With this xaml:
<ComboBox IsEditable="true">
<ComboBoxItem Content="aaaaa"/>
<ComboBoxItem Content="bbbbb"/>
<ComboBoxItem Content="ccccc"/>
</ComboBox>
Users can started typing with a to c, to auto complete the rest of characters.
a will become aaaaa, b will become bbbbb and so on.
However, the problem is if I want to add separator and make some of them exempting from auto-completion.
I tried this one:
<ComboBox IsEditable="true">
<ComboBoxItem Content="aaaaa"/>
<ComboBoxItem Content="bbbbb"/>
<Separator IsEnabled="false"/>
<ComboBoxItem Content="ccccc" IsEnabled="false"/>
</ComboBox>
When I hit c, combobox still show ccccc as choice.
Also, when I hit S, weirdly the combobox shows System.Windows.Controls.Separator as a choice(!)
My expectation was auto complete only supports typing a and b since the other two (Separator and ccccc) is set to IsEnabled="false".
Is there any solution for this?
Please let me know.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 items 集合来引入一些看起来像标题的东西可能不是一个好主意,您会遇到包括这个在内的各种问题。您可能最好为
ComboBox
创建自定义Template
或为该功能提供属性的自定义控件。Using the items collection to introduce something which looks like a header is probably not such a good idea, you will run into all kinds of problems including this one. You might be better of creating a custom
Template
for theComboBox
or a custom control altogether which provides properties for this functionality.未来访客的替代答案:我今天遇到了这个问题,并且不想按照接受的答案的建议完成创建自定义模板的所有工作。
对我来说,列表非常有限,因此我将
Separator
的TextSearch.Text
附加属性设置为不太可能被键入的字符。这里我使用版权符号:An alternative answer for future visitors: I ran into this issue today and do not want to go through all the work of creating a custom template as the accepted answer proposes.
For me, the list is very limited so I set the
TextSearch.Text
attached property for theSeparator
to a character which is unlikely to ever be typed. Here I use the Copyright symbol: