绑定到值的可编辑ComboBox不在列表中

我有可编辑的combobox,并不总是首选项在下拉列表中。

我想有可能在传播到绑定到SelectedValue的string的文本框中手动input文本。

现在,绑定到SelectedValue的string只会在ComboBox项目中input的值被打开的情况下更新。

如何允许手动inputComboBox列表中不可用的自定义值并将其正确传播到绑定值?

我昨天和今天就这样做,看起来像下面这样:

  1. 设置comboboxIsEditable="true"

  2. 而不是绑定到SelectedItem ,绑定到combobox的Text属性

  3. 如果你绑定到一个自定义的对象而不是string,你还需要设置TextSearch.TextPath="NameOfField" 。 这可以让文本search行为起作用,并且还可以在文本框中显示该属性。

总而言之,我结束了这样的事情:

 <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}" /> 

设置Combo的Text属性绑定也是足够的。

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