Автозаполнение для редактируемого WPF ComboBox, включая разделитель, показывает System.Windows.Controls.Separator - PullRequest
1 голос
/ 28 октября 2011

Автозаполнение для редактируемого WPF ComboBox, включая разделитель, показывает 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".

Есть ли какое-либо решение для этого?Пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Использование коллекции элементов для представления чего-либо, похожего на заголовок, вероятно, не очень хорошая идея, вы столкнетесь с различными проблемами, включая эту.Возможно, вам лучше создать пользовательский Template для ComboBox или пользовательский элемент управления в целом, который предоставляет свойства для этой функции.

0 голосов
/ 08 мая 2015

Альтернативный ответ для будущих посетителей: я столкнулся с этим вопросом сегодня и не хочу проходить всю работу по созданию пользовательского шаблона в соответствии с принятым ответом.

Для меня список очень ограничен, поэтому я установил TextSearch.Text присоединенное свойство для Separator для символа, который вряд ли когда-либо будет напечатан.Здесь я использую символ авторского права:

<ComboBox IsEditable="true">
 <ComboBoxItem Content="aaaaa"/>
 <ComboBoxItem Content="bbbbb"/>
 <Separator IsEnabled="false" TextSearch.Text="&#xA9;"/>
 <ComboBoxItem Content="ccccc" IsEnabled="false"/>
</ComboBox>
...