Редактируемый ComboBox с привязкой к значению отсутствует в списке - PullRequest
76 голосов
/ 18 сентября 2010

У меня есть редактируемый список, где не всегда предпочтительный элемент находится в раскрывающемся списке.

Я хотел бы иметь возможность вручную вводить текст в текстовое поле, которое распространяется на строку, привязанную к SelectedValue.

Прямо сейчас строка, связанная с SelectedValue, обновляется только в том случае, если введенное значениевходит в число элементов ComboBox.

Как разрешить ввод пользовательских значений, отсутствующих в списке ComboBox, и их правильное распространение до связанного значения?

Ответы [ 2 ]

123 голосов
/ 17 ноября 2010

Я просто делал это вчера и сегодня, и это выглядит следующим образом:

  1. установить комбинированный список IsEditable="true"

  2. вместо привязки к SelectedItem, привязка к свойству Text в выпадающем списке

  3. если вы привязываете к пользовательскому объекту, а не просто к строкам, вам также нужно установить TextSearch.TextPath="NameOfField". Это позволяет работать с текстовым поиском, а также отображает это свойство в текстовом поле.

В итоге я получил что-то вроде:

<ComboBox x:Name="c" 
          IsEditable="True" 
          IsTextSearchEnabled="True" 
          IsTextSearchCaseSensitive="False" 
          StaysOpenOnEdit="True"
          Text="{Binding NameOnViewModel}"
          TextSearch.TextPath="NameOnChildItems"  
          ItemsSource="{Binding Items}" 
          ItemTemplate="{StaticResource DataTemplate}" />

<TextBlock Text="{Binding ElementName=c,Path=Text}" />
26 голосов
/ 12 декабря 2011

Установка привязки к текстовому свойству Combo также будет достаточной.

<ComboBox  IsTextSearchEnabled="True"    IsEditable="True" 
ItemsSource="{Binding Items}" Text="{Binding SelectedItemText, Mode=TwoWay}" />
...