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

发布于 2024-12-12 07:34:27 字数 860 浏览 0 评论 0原文

包含分隔符控件的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别再吹冷风 2024-12-19 07:34:27

使用 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 the ComboBox or a custom control altogether which provides properties for this functionality.

入画浅相思 2024-12-19 07:34:27

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

对我来说,列表非常有限,因此我将 SeparatorTextSearch.Text 附加属性设置为不太可能被键入的字符。这里我使用版权符号:

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

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 the Separator to a character which is unlikely to ever be typed. Here I use the Copyright symbol:

<ComboBox IsEditable="true">
 <ComboBoxItem Content="aaaaa"/>
 <ComboBoxItem Content="bbbbb"/>
 <Separator IsEnabled="false" TextSearch.Text="©"/>
 <ComboBoxItem Content="ccccc" IsEnabled="false"/>
</ComboBox>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文