绑定到值的可编辑ComboBox不在列表中
我有可编辑的combobox,并不总是首选项在下拉列表中。
我想有可能在传播到绑定到SelectedValue的string的文本框中手动input文本。
现在,绑定到SelectedValue的string只会在ComboBox项目中input的值被打开的情况下更新。
如何允许手动inputComboBox列表中不可用的自定义值并将其正确传播到绑定值?
我昨天和今天就这样做,看起来像下面这样:
-
设置combobox
IsEditable="true"
-
而不是绑定到
SelectedItem
,绑定到combobox的Text
属性 -
如果你绑定到一个自定义的对象而不是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}" />